Oracle Spatial-元数据及SDO_GEOMETRY
一、空间表的元数据
将表的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。
转载自:
http://blog.csdn.net/cdl2008sky/article/details/8657007
另一博文:http://www.cnblogs.com/upDOoGIS/archive/2009/05/20/1469871.html
Oracle Spatial-元数据及SDO_GEOMETRY的更多相关文章
- Oracle Spatial中SDO_Geometry详细说明[转]
在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及基于Oracle Spatial的SDO_Geometry等 ...
- Oracle Spatial中SDO_Geometry说明
Oracle Spatial中SDO_Geometry说明 在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及 ...
- C#读取Oracle Spatial的sdo_geometry
oracle的sdo_geometry中内置get_wkt和get_wkb两个方法. 以数据库表geoms为例,此表中有id和geometry两列 try { OracleConnection con ...
- 【转载】Oracle Spatial中SDO_Geometry详细说明
转载只供个人学习参考,查看请前往原出处:http://www.cnblogs.com/upDOoGIS/archive/2009/05/20/1469871.html 相关微博:oracle 创建SD ...
- Oracle Spatial图层元数据坐标范围影响R-TREE索引的ROOT MBR吗?
Oracle Spatial的空间索引R-TREE,其实现原理为一级级的MBR(最小定界矩形).我突然想到一个问题,它的ROOT MBR是怎么确定的?是根据元数据表user_sdo_geom_meta ...
- shp转oracle spatial
2010年12月1日 终于搞定了shp到oracle spatial,说下步骤和感受吧! 1 XP系统:转换工具的下载(shp2sdo.exe ):下载后把此文件复制到PATH变量包含的目录下(E: ...
- Oracle Spatial GIS相关研究
1.Oracle Spatial 概念相关 Oracle Spatial 是Oracle 数据库强大的核心特性,包含了用于存储矢量数据类型.栅格数据类型和持续拓扑数据类型的原生数据类型.Oracle ...
- Oracle spatial与arcsde 的关系
有一些同事问过我下面这些问题: 我们用了oracle spatial sdo_geometry,是不是没用arcsde? 我们到底是使用oracle spatial还是arcsde,有点懵! 执行了c ...
- Oracle 关于WKT构造SDO_GEOMETRY的问题。
由于系统前端使用OpenLayers框架,后台数据库使用oracle spatial.大家知道Oracle spatial的SDO_GEOMETRY十分复杂,如果使用期java api ,那就坑爹了, ...
随机推荐
- Android Fragment真正意义上的onResume和onPause
Fragment虽然有onResume和onPause的,但是这两个方法是Activity的方法,调用时机也是与Activity相同,和ViewPager搭配使用这个方法就很鸡肋了,根本不是你想要的效 ...
- Diet
Dialogue 1 Healthy diet 关于健康饮食 F:Bob, look at this sentence. 'Healthy eating is not about strict n ...
- Android07-Android广播
¨广播机制简介 ¨动态和静态注册广播 ¨接收系统广播 ¨自定义广播 ¨本地广播 n广播是一种系统级的事件(Event). n当系统发生某些事件时(例如,收到短信.来电.电量低),就会向整个Andr ...
- ListView的Item点击事件(消息传递)
转载请保留原文出处“http://my.oschina.net/gluoyer/blog”,谢谢! 您可以到博客的“友情链接”中,“程序猿媛(最新下载)*.*”下载最新版本,持续更新!当前版本,也可直 ...
- 网易云课堂_程序设计入门-C语言_第三周:循环_2数字特征值
2 数字特征值(5分) 题目内容: 对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值.对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推.这个整数在第n位上的数字记作 ...
- 全国计算机等级考试二级教程-C语言程序设计_第15章_位运算
位运算,不适用于实数,仅仅适用于整数.字符. C语言的位运算只能操作整数.字符,实数是指数方式表示的,不适用于位运算. #define _CRT_SECURE_NO_WARNINGS #include ...
- 当PullToRefreshScrollView里面嵌套ListView
当PullToRefreshScrollView里面嵌套ListView,ListView上面还是有内容的,当下拉刷新的 时候,数据填充完成之后ListView就会往上面滑动,导致ListView上面 ...
- 菜鸟学SSH(十八)——Hibernate动态模型+JRebel实现动态创建表
项目用的是SSH基础框架,当中有一些信息非常相似,但又不尽同样.假设每个建一个实体的话,那样实体会太多.假设分组抽象,然后继承,又不是特别有规律.鉴于这样的情况.就打算让用户自己配置要加入的字段,然后 ...
- 业务需求那些事,使用WCF如何实现业务需求!
最近遇到一个新项目,需要与硬件结合,进行读取信息并保存在数据库中.业务要求也在昨天发布一个问题,当然感谢许多园内的朋友出谋划策,截图有真相! 关于这个问题,我做了如下假设.目前处于测试状态,代码比较简 ...
- Excel中公式的绝对引用和相对引用单元格
在Excel的表格中,非常常用的就是公式里的绝对引用和相对引用了,具体情况请看下列表格吧. 步骤1 打开做好的excel表格.公式中的相对单元格引用是基于包含公式和单元格引用的单元格的相对位置,若公式 ...