一、空间表的元数据

将表的SDO_GEOMETRY列的所有对象作为一个空间层。Spatial需要对所有空间对象进行验证、创建索引和查询。此时需要为图层指定适当的元数据,该数据包含如下信息:维度、维度边界、容差、坐标系。每个图层的上述信息填充到USER_SDO_GEOM_METADATA字典试图中。

SQL>DESCRIBE  USER_SDO_GEOM_METADATA

USER_SDO_GEOM_METADATA视图

列名

类型

列名描述

TABLE_NAME

VARCHAR2()

COLUMN_NAME

VARCHAR2()

SRID

NUMBER

DIMINFO

MDSYS.SDO_DIM_ARRAY

伟度信息

SRID属性:SRID是空间参考系ID。如果SDO_SRID为null,则没有指定坐标系统,如果SDO_SRID不为null,那么它的值必须在在MDSYS.CS_SRS表中的 SRID 列有对应的值。

MDSYS.CS_SRS表

列名

类型

列名描述

CS_NAME

VARCHAR2(68)

坐标系统名称

SRID

NUMBER(38)

空间参考ID,为唯一值。1-999999为spatial使用的空间参考,1000000以后为用户自定义

AUTH_SRID

NUMBER(38)

可选的SRID,是个外键。另一个坐标系统的SRID

DIMEINFO属性:

SQL>DESCRIBE  SDO_DIM_ARRAY

属性的数据类型是MDSYS.SDO_DIM_ARRAY它是一个可变长的SDO_DIM_ELEMENT类型的数组。其大小由维度决定,对于一个二维几何体,则包行两个SDO_DIM_ELEMENT。

SDO_DIM_ELEMENT包含如下属性:

SDO_DIMNAME表示该维度的名称,比如x,y

SDO_LB和SDO_UB 维度的上限和下限,比如经度SDO_LB-180 SDO_UB 180.伟度经度SDO_LB-90 SDO_UB 90.

SDO_TOLERANCE,容差值,比如A和B两点相差0.5,则认为是同一位置。


二、SDO_GEOMETRY数据类型

用数组,结构体或带有构造函数,功能函数的类来定义自己的对象类型。这样的对象类型能用于属性列的数据类型,也能用来创建对象表。
而oracle spatial也正是基于此种特性所研发的一套空间数据处理系统.
spatial 的自定义数据类型有非常多,都在mdsys方案下,经常使用的是sdo_geometry类型。
sdo_geometry表示一个几何对象,能是点、线、面、多点、多线、多面或混合对象。
spatial 在此数据类型的基础上,实现了r树空间索引和四叉树空间索引,还以sql函数的形式实现了多种空间分析功能。
GEOLOC 定义结构如下:
CREATE TYPE sdo_geometry AS OBJECT (
    SDO_GTYPE NUMBER,
    SDO_SRID NUMBER,
    SDO_POINT SDO_POINT_TYPE,
    SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY,
    SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY);
)

(1)、SDO_GTYPE:用四个数字定义了所有的形状
第一位:维数如二维、三维对应的2和3
第二位:定义了LRS。一般是0;
最后两位: 定义了地理对象的类型。现在使用从00到07

Value  Geometry Description 
00     UNKNOWN_GEOMETRY Spatial ignores this value 
01     POINT A single point element 
02     LINE or CURVE Contains one line string element that may be linear, curved or both
03     POLYGON Contains one polygon element with or without other polygon elements in it
04     COLLECTION A heterogeneous collection of elements 
05     MULTIPOINT Contains one or more points 
06     MULTILINE or MULTICURVE Contains one or more line string elements 
07     MULTIPOLYGON Contains multiple polygon elements that maybe disjoint

比如一条线的SDO_GTYPE:2002

(2)、SDO_SRID:定义了空间坐标参考系统。NULL为笛卡尔坐标系。
If SDO_SRID is null, no coordinate system is associated with the geometry. 
If SDO_SRID is not null, it must contain a value from the SRID column of the SDO_COORD_REF_SYS table,
and this value must be inserted into the SRID column of the USER_SDO_GEOM_METADATA view.
All geometries in a geometry column must have the same SDO_SRID value.

(3)、SDO_POINT:Oracle Spatial也可定义单个的点,SDO_POINT的定义:
    CREATE TYPE sdo_point_type AS OBJECT (X NUMBER,Y NUMBER,Z NUMBER); 如果是二维,Z为NULL。

如果几何类型为点类型的话,SDO_ELEM_INFO和SDO_ORDINATES对应的值都为Null,SDO_POINT不为空。其它情况下,SDO_POINT会被Spatial所忽略即设为Null。如果这个层只有点对象,那么推荐你将其保存在SDO_POINT属性中。

(3)、SDO_ELEM_INFO:定义了如何理解SDO_ORDINATES中的坐标字符串属性。
第一个数:SDO_STARTING_OFFSET
第二个数:SDO_ETYPE 
第三个数:SDO_INTERPRETATION
a、SDO_STARTING_OFFSET:声明了组成当前几何片段的第一个坐标在SDO_ORDINATES数组中的坐标序号。
      坐标序号是从1开始起算的而非从0开始。这里的SDO_ORDINATES就是sdo_geometry 中的坐标序列,
      坐标序列是已逗号隔开的数字,具体的计算如:sdo_ordinate_array(1,4,6,7,8,9)中如果以'6'开始几何片段的话,
      坐标序号SDO_STARTING_OFFSET=3。
b、SDO_ETYPE :声明元素的类型。可结合 SDO_STARTING_OFFSET和SDO_ETYPE 表来理解.
c、SDO_INTERPRETATION:可结合 SDO_STARTING_OFFSET和SDO_ETYPE 表来理解.

SDO_ETYPE SDO_INTERPRETATION 组合含义
1 任何数(n)
1 1 普通单点
1 n 多点
2 1 直线段组成的多义线
2 2 曲线段组成的多义线
1003或者2003 1 系列直线段组成的多边形
1003或者2003 2 系列曲线段组成的多边形
1003或者2003 3 矩形
1003或者2003 4
4 n(n>1) 直线段和曲线段组成的复杂多义线
1005或者2005 n(n>1) 直线段和曲线段组成的复杂多边形

说明:

SDO_ETYPE 值 = 1, 2, 1003,或2003,说明几何为简单的几何类型。可以全部按SDO_ELEM_INFO 属性单元[即三个以逗号隔开的数]来理解sdo_ordinate_array中的坐标序列。
SDO_ETYPE 值 = 1003 ,假如几何类型为面,则表示为外多边形环(以逆时针顺序) 
SDO_ETYPE 值 = 2003 ,假如几何类型为面,则表示为内多边形环(以顺时针顺序)
SDO_ETYPE 值 = 4,1005或2005,说明几何为组合元素,往往第一个三数字组不是SDO_ELEM_INFO 属性单元,而是为了说明组合元素的信息。

SDO_ORDINATES:几何图形所有顶点列表。定义为 CREATE TYPE sdo_ordinate_array AS VARRAY (1048576) of NUMBER;
The SDO_ORDINATES attribute is defined using a varying length array (1048576) of NUMBER type
that stores the coordinate values that make up the boundary of a spatial object。比如构造一条直线A,B直线,其中A点坐标X0,Y0。B坐标X1,Y1,则SDO_ORDINATES存储的顺序是X0,Y0,X1,Y1。

Oracle Spatial-元数据及SDO_GEOMETRY相关推荐

  1. oracle spatial java 类库,[ Oracle Spatial 系列 ] 之一 SDO_Geometry详细说明(ZZ)

    在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及基于Oracle Spatial的SDO_Geometry等 ...

  2. Oracle Spatial中SDO_Geometry说明

    Oracle Spatial中SDO_Geometry说明 在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及 ...

  3. Oracle Spatial中SDO_Geometry详细说明

    转自:https://blog.csdn.net/u010865734/article/details/74526451 在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有: ...

  4. oracle 空间数据字段,Oracle spatial创建空间数据的字段详解

    Oracle spatial Oracle spatial主要通过sdo_geometry来储存空间信息,主要有五个参数 SDO_GTYPE    number SDO_SRID number SDO ...

  5. oracle spatial 数据导入_【转】 Oracle Spatial 基本操作

    原文链接: http://www.cnblogs.com/frogbag/archive/2007/10/17/926870.html,感谢作者. 基本操作比较全面,包括建表.建索引和查询. Step ...

  6. Oracle Spatial 空间分析之缓冲区分析

    缓冲区分析需要主要使用Oracle Spatial 空间分析操作函数,下面会对其各个参数进行详细讲解,资料有来源于网上与书上. 使用Oracle Spatial 空间分析操作函数--SDO_WITHI ...

  7. 深入浅出Oracle Spatial

    空间数据库(Spatial Database)用于存储.查询点.线.面的空间对象. 为什么需要空间数据库(组件) 做一个区域的人口普查,不仅仅记录人口信息,还需要记录区域地理信息,通过空间数据库字段可 ...

  8. Oracle Spatial的空间查询,代码操作

    oracle的sdo_geometry中内置get_wkt和get_wkb两个方法. 以数据库表geoms为例,此表中有id和geometry两列 try { OracleConnection con ...

  9. oracle查询元数据,Oracle Spatial-元数据及SDO_GEOMETRY

    一.空间表的元数据 将表的SDO_GEOMETRY列的所有对象作为一个空间层.Spatial需要对所有空间对象进行验证.创建索引和查询.此时需要为图层指定适当的元数据,该数据包含如下信息:维度.维度边 ...

  10. OCCI读写Oracle Spatial的SDO_Geometry

    1.使用Oracle OTT工具生成对应的C++类. 1.1设置ORACLE_HOME:服务器端安装目录. 设置客户端安装目录,提示什么java错误. 暂时不管了. 1.2写一个intype文件tes ...

最新文章

  1. VS code for python开发利器
  2. no python application found_用Nginx部署Django服务no python application found
  3. SCCM2007系列教程之十操作系统部署(二)
  4. 用python计算两个二维list依据第二维的前一个数据相加
  5. MFC模块状态(一)
  6. 《Java程序设计》学期总结
  7. Dubbo服务引入原理
  8. 苹果WWDC 2020回顾:来看看这个安卓味的iOS 14!
  9. 蓝魔i11pro运行linux,不仅仅是变大了 蓝魔i11pro新玩法
  10. ubuntu eclipse mysql_ubuntu下eclipse连接mysql
  11. 虚拟机同步器用易语言怎么写_安装虚拟机的好处或用处是什么/如有效地防止病毒...
  12. GB28181协议常见几种信令流程(一)
  13. Tssd2019最新版下载地址和更新说明
  14. 真3D麻将游戏桌面适配任意分辨率
  15. 数据分析学习总结笔记04:异常值处理
  16. 自己动手做Arduino玩具(二)
  17. 001如何将灰度视频处理为伪彩色
  18. 太阳能发电板的规格尺寸_太阳能电池板瓦数和尺寸如何计算?
  19. 初创公司需不需要产品经理?
  20. Jenkins之分布式部署及构建(master-slaver)

热门文章

  1. floyd算法和动态规划
  2. neutron plugin 与 extension 编写流程
  3. 阿里云服务器上配置并使用: PHP + Redis + Mysql 从配置到使用
  4. 线程与进程的一些应用
  5. Web攻防之XSS,CSRF,SQL注入
  6. java 中类的加载顺序
  7. Dbus的编译和安装
  8. 文件copy模块shutil
  9. 不同场景下MySQL的迁移方案
  10. linux7添加两个网关,RHEL7设置IP地址、网关和DNS(示例代码)