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-99Oracle的保留字段。

00

未知的地理数据类型

01

单个的点

02

单条的线

03

单个的面

04

集合(可以包含除此类型之外的所有其他类型)

05

点集/多点

06

多条线

07

多个面

 

所以对现在常用的数据类型,2001表示一个点,2002表示一个面,2003表示一个面

每一列空间数据必须用来存放同一维度的数据。

SDO_SRID   用来定义空间数据的投影信息,如果为null,表示没有空间参照坐标系,如果不为空,那么必须是系统表SDO_COORD_REF_SYSSRID列中的一个值,也就是说必须是由Oracle定义的某一种空间参考坐标系,SRID信息必须与该表定义的空间元数据的投影信息一致。

4326WGS-84空间参考系,坐标单位是经纬度

54004World Mercator空间参考系,坐标单位是米

SDO_POINT  用来定义点对象类型,属性有三个(X,Y,Z)均为数值类型,如果SDO_ELEM_INFOSDO_ORDINATES两个字段均为空,那么SDO_POINT内储存的X,Y信息就会被认为是一个点类型的几何实体,否则这个字段会被系统自动忽略。

 

SDO_ELEM_INFO   这个字段存储的信息主要用来解释存储在SDO_ORDINATES中坐标的属性。字段内共有三个参数,SDO_STARTING_OFFSETSDO_ETYPESDO_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

You may also like...