首页 理论教育 OracleSpatial空间表元数据|空间数据库实验教程

OracleSpatial空间表元数据|空间数据库实验教程

时间:2023-08-29 理论教育 版权反馈
【摘要】:Oracle Spatial将所有存在于一个表的单个SDO_GEOMETRY列中的所有对象作为一个空间层。要对每个空间层的空间对象进行验证、创建索引以及查询统计,都需要为每个层指定元数据。OracleSpatial提供可以更新的USER_SDO_GEOM_METADATA视图来存储空间层的元数据。该视图的结构如下:上面的视图结构中,TABLE_NAME和COLUMN_NAME合起来可以唯一标识Oracle Spatial中的一个空间层。Oracle Spatial只对维度名称进行存储而不对其进行解释。

OracleSpatial空间表元数据|空间数据库实验教程

Oracle Spatial将所有存在于一个表的单个SDO_GEOMETRY列中的所有对象作为一个空间层(Spatial Layer)。例如,4.2节中的美国地图示例数据的CITIES要素层,存储在数据表CITIES的SHAPE列的所有几何对象被当作一个空间层。要对每个空间层的空间对象进行验证、创建索引以及查询统计,都需要为每个层指定元数据。这些元数据主要包括以下信息:①维度;②每个维度的边界;③每个维度的容差;④坐标系。每个空间层的上述四个方面的信息被填充在USER_SDO_GEOM_METADATA字典视图中。

OracleSpatial提供可以更新的USER_SDO_GEOM_METADATA视图来存储空间层的元数据。该视图的结构如下:

上面的视图结构中,TABLE_NAME和COLUMN_NAME合起来可以唯一标识Oracle Spatial中的一个空间层。对应的空间层的坐标系统信息存储在SRID字段,维度信息存储在DIMINFO字段中。

SRID定义了存储空间层数据的坐标系统。坐标系统可以是下列几种坐标系统之一。①大地坐标系(Geodetic):角坐标,用经纬度表示的坐标系统;②投影坐标系(Projected):直角坐标,通过一个数学映射将地球表面的一个区域映射到一个平面上,在平面上采用直接坐标来表示平面上的每个点;③本地坐标系(Local):直角坐标,与地球表面无关,只与某个应用有关。如CAD的设计坐标系统、3DMax的建模坐标系统等。关于更加详细的SRID请参考3.2.2的内容。

DIMINFO属性用于界定空间层的空间维度信息。USER_SDO_GEOM_METADATA中的DIMINFO为相应的空间层指定维度信息,其结构如下:

从上面可以看出,SDO_DIM_ARRAY是一个最大长度为4的可变长数组,数组元素的类型为SDO_DIM_ELEMENT。如果空间层是二维的,则SDO_DIM_ARRAY是一个包含两个SDO_DIM_ELEMENT元素的数组,如果空间层是三维的,则SDO_DIM_ARRAY包含三个类型为SDO_DIM_ELEMENT的元素的数组。每个SDO_DIM_ELEMENT存储一个指定维度的信息,其中:(www.xing528.com)

(1)SDO_DIMNAME存储该维度的名称。例如,可以是“经度”“纬度”或其他自命名的“X轴”“Y轴”等,最大长度为64字节。Oracle Spatial只对维度名称进行存储而不对其进行解释。

(2)SDO_LB和SDO_UB是该纬度的最小边界值和最大边界值,例如在X方向上最大值为1000,最小值为-1000,则SDO_LB=-1000,SDO_UB=1000。如果是经度,则范围为[-180°,180°],则SDO_LB=-180,SDO_UB=180。如果是纬度,则范围为[-90°,90°],则SDO_LB=-90,SDO_UB=90。需要说明的是,这个方位是应用程序专用的,边界值应该根据具体应用设置。

(3)SDO_TOLERANCE是容差值,与SDO_LB和SDO_UB的单位一致,用于指定空间数据精确度。容差值的选择将直接影响空间函数的运算结果。前面遇到的大部分空间函数都不直接读取USER_SDO_GEOM_METADATA中的容差值,而是希望用户把容差值作为一个参数直接输入给函数。容差值选择的一般原则是,设置成应用程序中最小可区别距离。对于大地坐标系统,容差值一般建议设置为0.5m;对于投影坐标系统和本地坐标系统,容差值一般设置为在某一纬度中任何两个值之间最小距离的一半。

清楚上面相关项的含义后,可以查询USER_SDO_GEOM_METADATA中的数据项。与本章示例数据对应的有四条记录:

上述记录显示,CITIES表的SHAPE字段是SDO_GEOMETRY类型,空间维度为二维,经度的范围为[-180°,180°],容差值为0.001°;纬度的范围为[-90°,90°],容差值为0.001°;坐标系统的SRID值为4269。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈