GIS空间数据库(8b)ORACLE SPATIAL空间数据存储解决方案
Oracle Spatial概念
Oracle spatial通常被称为Spatial,即Oracle空间组件,它提供了一个基于SQL的方案和函数集来储存、检索、更新、查询Oracle数据库中的空间数据集。
Spatial包含以下一些组件
- 一套用来描述空间数据存储、语义和语法的方案;
- 一套空间索引机制;
- 一组操作符和函数用来进行面相关的查询、空间相交查询和其他空间分析操作;
- 管理模块。
对象关系模型
Oracle 10g spatial 不再支持关系几何模型,只支持对象关系模型。在对象关系模型中用SDO_GEOMETRY类型列来描述SDO_GEOMETRY类型数据(几何图形数据)。每个实体的信息都写在表中的一行中。对象关系模型协同支持几何类型的SQL语句一起工作,来处理符合Open GIS ODBC/SQL规格的空间数据表。
优点:
- 支持多种几何数据类型,包括弧段、圆、复合多边形、复合线串和优化矩形;
- 能够方便的在空间数据查询时创建和维护索引;
- 数据库自身维护索引;
- 几何模型存储在单行单列中;
- 最佳的执行表现。
数据类型
- 点(串) Points and point clusters
- 线串 Line strings
- 多边形 n-point polygons
- 弧段 Arc line strings (All arcs are generated as circular arcs.)
- 弧段多边形 Arc polygons
- 复合多边形 Compound polygons
- 复合线串 Compound line strings
- 圆 Circles
- 优化矩形 Optimized rectangles
数据模型
Oracle 中的空间数据模型是一个层次结构,依次由层(Layer)、空间数据对象(Geometry)、元素(Element)构成,如下图:LayerGeometryElement
Layer属性: Coordinate system,Tolence
其中Element可以是Spatial支持的任何一种空间数据对象元素(点、线和多边形),一个空间数据对象有一个或者多个同类或异类的Element组成,Layer有具有相同属性的Geometry组成。
Coordinate System ,坐标系统,又称空间参考系统,负责指定位置的坐标和确定一组坐标之间的关系,可以让一组坐标对应到真实世界里的具体位置中。Tolence是容忍值,即判断两个空间数据对象是否分离的最小距离值。
查询模型
Oracle spatial提供了两层查询模型,第一层是primary filter 初级过滤,第二层是secondary filter精确过滤。
Primary Filter初级过滤,速度比较快,而且可以满足我们大多数的的查询要求,比如进行窗口查询,显示指定范围内的空间数据。
Secondary Filter精确过滤,主要用来确定多个空间数据对象之间的相关位置关系,例如两个实体之间的拓扑关系和距离。
数据索引
支持R树索引和四叉树索引。根据这两种索引的性能表形,在Oracle 10g Spatial 中,强烈推荐使用R树索引,尽量不要用四叉树索引。
R树索引 最高可支持四维空间数据的索引。
R树索引把每一个几何实体近似看作其最小外包矩形(MBR Minimum Bounding Rectangle),在一个层中,R树索引为把每个空间数据对象的最小MBR建立一个层次结构。
随着我们不断的插入和更新数据,R树索引的质量会随之下降,我们可以用SDO_TUNE.QUALITY_DEGRADATION函数来判断索引的状态,如果返回值大于2,那么我们就应该考虑用ALTER INDEX REBUILD函数来重新构建索引。
拓扑数据模型
拓扑层:一个拓扑几何体通常是由一组拓扑元素组成(节点,边,面),每个几何体有一个唯一标识码。拓扑层是某一类拓扑几何体的集合,每个拓扑层对应一个特性表(feature table)。每个拓扑几何体被定义为SDO_TOP0_GEOMETRY类型的对象,其中包含其ID,层ID,几何体类型,拓扑ID。拓扑元数据存放在USER_SDO_TOPO_METADATA和ALL_SDO_TOPO_METADATA视图中,有系统维护。
一个拓扑里面可能包含许多的拓扑层(特性表层),这些拓扑层可以建立层次关系,即一个拓扑层可以有父层和孩子层。父层包含孩子层的所有特性。
拓扑数据模型表:
- 在每一个特性表中都有SDO_TOPO_GEOMETRY列,SDO_TOPO_GEOMETRY类型中包含TG_LAYER_ID和TG_ID两项属性。
- 特性表中的每个特性在关系表中都有一个或者多行记录。
- 节点、边、面信息表中存储TOPO_ID和TOPO_TYPE属性,我们可以根据特性表中的TG_LAYER_ID和TG_ID找到对应的TOPO_ID和TOPO_TYPE。
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。