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。
ArcGIS操作教程(18)使用ArcMap打印地图 ArcGIS操作教程(19)ArcMap打印大幅面地图

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论