Oracle spatial创建空间数据的字段详解
Oracle spatial
Oracle spatial主要通过sdo_geometry来储存空间信息,主要有五个参数
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
SDO_GTYPE 是一个由四个数字组成的数值型参数,形式为dltt。其中,
d的取值为2,3,4分别代表所存空间实体的维度
l为一个三维LRS几何实体定义了一个线性参考度量维度,也就是说只有在三维或者四维的地理实体中才需要定义这个度量,对于没有LRS的地理实体,该值默认为0.
tt 主要用来定义地理实体的类型,现有的类型是从00-07,08-99为Oracle的保留字段。
00 |
未知的地理数据类型 |
01 |
单个的点 |
02 |
单条的线 |
03 |
单个的面 |
04 |
集合(可以包含除此类型之外的所有其他类型) |
05 |
点集/多点 |
06 |
多条线 |
07 |
多个面 |
所以对现在常用的数据类型,2001表示一个点,2002表示一个面,2003表示一个面。
每一列空间数据必须用来存放同一维度的数据。
SDO_SRID 用来定义空间数据的投影信息,如果为null,表示没有空间参照坐标系,如果不为空,那么必须是系统表SDO_COORD_REF_SYS中SRID列中的一个值,也就是说必须是由Oracle定义的某一种空间参考坐标系,SRID信息必须与该表定义的空间元数据的投影信息一致。
4326,WGS-84空间参考系,坐标单位是经纬度
54004,World Mercator空间参考系,坐标单位是米
SDO_POINT 用来定义点对象类型,属性有三个(X,Y,Z)均为数值类型,如果SDO_ELEM_INFO与SDO_ORDINATES两个字段均为空,那么SDO_POINT内储存的X,Y信息就会被认为是一个点类型的几何实体,否则这个字段会被系统自动忽略。
SDO_ELEM_INFO 这个字段存储的信息主要用来解释存储在SDO_ORDINATES中坐标的属性。字段内共有三个参数,SDO_STARTING_OFFSET,SDO_ETYPE,SDO_INTERPRETATION。
SDO_STARTING_OFFSET表示SDO_ORDINATES数组中所存放元素坐标的起点,如果SDO_ORDINATES数组中存放了一个元素,该值为1。举例说明,SDO_ORDINATES存放的地理信息如下,
INSERT INTO cola_markets VALUES(
10,
‘polygon_with_hole’,
SDO_GEOMETRY(
2003, — two-dimensional polygon
NULL,
NULL,
SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1), — polygon with hole
SDO_ORDINATE_ARRAY(2,4, 4,3, 10,3, 13,5, 13,9, 11,13, 5,13, 2,11, 2,4,
7,5, 7,10, 10,10, 10,5, 7,5)
)
);
SDO_ORDINATES数组中存放的是一个如下图所示的多边形,一共有两个面状几何实体构成,第一个几何实体默认从第一位开始,第二个几何实体从第19个数字开始算起,所以SDO_ELEM_INFO数组中的信息如上所示,
SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1)
SDO_ETYPE 与 SDO_INTERPRETATION共同确定几何实体的详细组成,描述的是SDO_ORDINATE_ARRAY中坐标中的信息。
SDO_ETYPE |
SDO_INTERPRETATION |
代表含义 |
0 |
任意数值 |
表示不被Oracle支持的数据 |
1 |
1 |
点 |
1 |
0 |
原点类型 |
1 |
n |
n个点组成的点集 |
2 |
1 |
直线 |
2 |
2 |
有弯曲角度的线 |
1003,or2003 |
1 |
基础面,每个边都是直线类型 |
1003or2003 |
2 |
面,边是由有弯曲的线构成的 |
1003or2003 |
3 |
矩形,给定左下角,右上角,两个point |
1003or2003 |
4 |
圆,由三个不同的点描述 |
4 |
n>1 |
混合线型,一条线由直线与曲线共同组成的 |
1005or2005 |
n>1 |
混合面,由直线与曲线组成的面 |
|
|
|
SDO_ORDINATES 存放坐标信息的数组
SDO_ORDINATE_ARRAY(10,10, 10,14, 6,10, 14,10)
转载自:https://blog.csdn.net/MomoL1911/article/details/49072343