- 浏览: 577166 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (237)
- Java (48)
- Flex3 (43)
- Spring (7)
- Hibernate (7)
- 杂文 (2)
- 设计模式 (3)
- 数据库相关 (32)
- Eclipse开发环境 (10)
- C/C++ (1)
- 随笔 (1)
- 生活点滴 (2)
- Flex4 (3)
- Oracle (6)
- SQLServer (6)
- Degrafa (1)
- ActionScript (2)
- JavaScript (11)
- MySQL (8)
- 开源项目 (4)
- AspectJ (0)
- Spring Security (1)
- SSO (0)
- PV3D (2)
- JBPM (1)
- JBoss (0)
- Tomcat (5)
- Struts (1)
- WebService (2)
- 算法 (1)
- 数据结构 (1)
- POI (2)
- Lucene (2)
- 其他 (3)
- Blazeds (2)
- Alternative 3D (0)
- Ibatis (3)
- Intellij (3)
- freemaker (0)
- Maven (5)
- web (4)
- Eclipse (1)
- velocity (1)
- Linux (7)
- CXF (3)
- html (2)
- JVM (1)
最新评论
-
jpsb:
多谢楼主,问题解决,主要就是svn版本不同导致的
Eclipse 导入本地svn项目的问题 -
yycdaizi:
lanmolsz 写道无法同意楼主的说法,楼主所谓的晚捕捉就是 ...
Java异常处理原则 -
lanmolsz:
无法同意楼主的说法,楼主所谓的晚捕捉就是典型的让异常控制程序的 ...
Java异常处理原则 -
cici_new_1987:
...
Java异常处理原则 -
雁行:
倒是怀疑这个功能来着
Eclipse 导入本地svn项目的问题
转至:http://www.cnblogs.com/upDOoGIS/archive/2009/05/20/1469871.html
在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw 、ESRI的ST_Geometry以及基于Oracle Spatial的SDO_Geometry等等。 <UpDooGIS原创>
关于这几种方式的各自的优缺点不是主要的探讨的方向,这些我们可以通过ArcGIS中的ArcGIS Server Help得到相关的帮助。这里主要是学习关于基于Oracle Spatial的存储方式,通过这种存储方式几何列Shape的字段类型为mdsys.sde_geometry类型。
Oracle Spatial定义的SDO_GEOMETRY类型为:
CREATE TYPE sdo_geometry AS OBJECT (
SDO_GTYPE NUMBER, //前面字符串为字段名;后面字符串为字段类型
SDO_SRID NUMBER,
SDO_POINT SDO_POINT_TYPE,
SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY,
SDO_ORDINATES SDO_ORDINATE_ARRAY);
其中sdo_geometry AS OBJECT ,标识该类型为对象类型。开始我们可以想想它为ArcObjects中的Geometry对象(本来要素的shape字段中的对象就是Geometry),而不要理解他是怎么样组织的。至于该类型中的SDO_POINT_TYPE、SDO_ELEM_INFO_ARRAY、SDO_ORDINATE_ARRAY也是Oracle Spatial自定义的类型和 sdo_geometry 是一样的。
现在对sdo_geometry 类型中的各个参数简单的介绍:
1、SDO_GTYPE :表示要存储的几何类型,如点线面。它是通过 NUMBER类型来表达的;
2、SDO_SRID :几何的空间参考坐标系,类型也为 NUMBER;
3、SDO_POINT :如果几何类型点类型的话,就是存储点坐标,否则为空。oracle自定义的SDO_POINT_TYPE类型;
4、SDO_ELEM_INFO :定义要如何理解SDO_ORDINATES中的坐标串的;
5、SDO_ORDINATES :存储实际坐标的,以X、Y以及不同点之间都是逗号隔开;
下面将详细介绍这些字段参数的含义
一、SDO_GTYPE
SDO_GTYPE值是有四位数字组成的,它们的格式为:dltt 。
其中,d 表示几何的维数。如二维、三维对应的d=2和d=3;
l 定义了LRS。一般l=0;
tt 定义了地理对象的类型。现在使用从00到07,如tt=01代表为单点;
下面就是t=2的二维几何类型,SDO_GTYPE参数值具体,如 图1:
对于一个给定的层,所有的地理对象必须都是相同的维度,不能将二维与三维的数据放在一个层里。
二、SDO_SRID
SDO_SRID定义了空间坐标参考系统。如果SDO_SRID为null,则没有指定坐标系统,如果SDO_SRID不为null,那么它的值必须在在MDSYS.CS_SRS 表中的 SRID 列有对应的值,而且它的值必须插入USER_SDO_GEOM_METADATA视图中。MDSYS.CS_SRS 表参考 图3
三、 SDO_POINT
SDO_POINT类型的构造方法为:sdo_point_type(x,y,z),其中x,y,z类型为Double和Int都可
SDO_POINT字段定义为含有X、Y、Z属性的SDO_POINT_TYPE类型。如果几何类型为点类型的话,SDO_ELEM_INFO 和SDO_ORDINATES对应的值都为Null,SDO_POINT 不为空。其它情况下,SDO_POINT会被Spatial所忽略即设为Null。如果这个层只有点对象,那么推荐你将其保存在SDO_POINT属性中。 SDO_POINT_TYPE类型的定义如下:
CREATE TYPE sdo_point_type AS OBJECT (
X NUMBER, //X坐标值
Y NUMBER, //y坐标值
Z NUMBER); //z坐标值
四、SDO_ELEM_INFO
SDO_ELEM_INFO类型的构造方法为:sdo_elem_info_array(a,b.c),其中a,b.c为Number类型。
SDO_ELEM_INFO是理解和掌握SDO_Geometry的重点和难点,SDO_ELEM_INFO 定义了如何理解SDO_ORDINATES中的坐标字符串属性。
SDO_ELEM_INFO每三个数字组合为一个SDO_ELEM_INFO属性单元(具体可以结合下面的例子理解)。
每个SDO_ELEM_INFO属性单元由:SDO_STARTING_OFFSET、SDO_ETYPE 和SDO_INTERPRETATION 组成。下面介绍一下这三个数字的具体含义:
4.1、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。(具体参考下面的例子理解)
4.2、SDO_ETYPE :声明元素的类型。可结合 SDO_STARTING_OFFSET和SDO_ETYPE 表来理解.
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 属性单元,而是为了说明组合元素的信息。具体可以参见下面 复杂多义线 和 复杂多边形 的例子。
4.3、SDO_INTERPRETATION:有两种可能的意思,依赖地SDO_ETYPE是否是组合元素。如果SDO_ETYPE 值 = 4,1005或2005,标识的是有多少组合部分,具体参考 复杂多义线 和 复杂多边形 的例子。如果SDO_ETYPE 值 = 1, 2, 1003,或2003,标识决定了元素坐标队列的翻译顺序。
如下图4:SDO_STARTING_OFFSET和SDO_ETYPE 表
五、SDO_ORDINATES
SDO_ORDINATES类型的构造方法为:sdo_ordinate_array(x1,y1,x2,y2,……),其中x1,y1类型等为Double和Int都可。
SDO_ORDINATES存储的是空间对象的几何节点坐标序列,用逗号将X、Y、Z以及不同点之间隔开,该字段性质:长度=1048576的数字Number类型。如果几何为二维的情况,存储的序列为{Y1, X2, Y2, X3, Y3, X4, Y4......}格式;几何为三维坐标的话,如三维坐标的多边形它的存储的序列为{X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, Z4, X1, Y1, Z1}格式。坐标序列中的数据必须都合法且不为空。具体坐标的组合成几何的结合SDO_ELEM_INFO来理解。
六、参考例子:
6.1、矩形:
矩形的具体几何形状和坐标,如下图:
用SDO_GEOMETRY定义该矩形,如何确定sdo_geometry()构造方法中的各个参数值。详细解释如下:
SDO_GTYPE = 2003;2003中的2表示二维数据,2003中的3表示表示多边形。具体参考 图1
SDO_SRID = NULL;
SDO_POINT = NULL;
SDO_ELEM_INFO = (1, 1003, 3).;在属性单元SDO_ELEM_INFO (1,1003,3)中的最后一个3表示该几何为矩形,具体参考 图4 。
---因为它是矩形且为二维所以它的构造方法为:sdo_point_type(坐下坐标,右上坐标)。
SDO_ORDINATES = (1,1, 5,7). 定义了具体的坐下坐标和右上坐标的坐标序列。
例子:用SQL 命令插入一个矩形:
INSERT INTO beniy388 VALUES(
1, //其他的属性字段的值
'UpDooGIS', //其他的属性字段的值
MDSYS.SDO_GEOMETRY( //几何字段SDO_GEOMETRY的值
2003, -- 二维多边形
NULL,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3), -- 一个矩形(1003为逆时针方向)
MDSYS.SDO_ORDINATE_ARRAY(1,1, 5,7) -- 只需要两点
)
);
6.2、有岛多边形:
有岛多边形的具体几何形状和坐标,如下图:
用SDO_GEOMETRY定义该多边形,如何确定sdo_geometry()构造方法中的各个参数值。详细解释如下:
SDO_GTYPE = 2003;---2003中的2表示二维数据,2003中的3表示表示多边形。具体参考 图1
SDO_SRID = NULL;
SDO_POINT = NULL;
SDO_ELEM_INFO = (1,1003,1, 19,2003,1); ---有两个三元组SDO_ELEM_INFO属性元素。具体参考 图4
---其中1003表明对应的坐标序列组成的几何A为外多边形环(顺时针);而2003表明对应的坐标序列组成的几何B为内多边形环(逆时针)。
---19 表示几何B坐标序列开始的位置,也就是说从19开始的几何坐标组成几何B,而1到18组成几何A。
SDO_ORDINATES = (10,10, 10,14, 6,10, 14,10);---坐标系列
例子:用SQL 命令插入一个有岛的多边形:
INSERT INTO beniy388 VALUES
10, //其他的属性字段的值
'UpDooGIS', //其他的属性字段的值
MDSYS.SDO_GEOMETRY( //几何字段SDO_GEOMETRY的值
2003,
NULL,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,1), -- 有岛多边形
MDSYS.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)
)
);
6.3、复杂多义线
下图描述的是一个由一条直线和一条曲线构成的复杂多义线。图中出现了4个点,(10,10)和(10,14)点表示的是直线 ;10,14), (10,6), 和 (14,10) 描述的是圆弧曲线:
用SDO_GEOMETRY定义该复杂多义线,如何确定sdo_geometry()构造方法中的各个参数值。详细解释如下:
SDO_GTYPE = 2002;2002中的2表示二维数据,第二个2表示表示一条或多条直线段。具体参考 图1。
SDO_SRID = NULL;
SDO_POINT = NULL;
SDO_ELEM_INFO = (1,4,2, 1,2,1, 3,2,2). ---有三个三元组,其中后两个是SDO_ELEM_INFO属性元素三元组,前一个为表述组合。具体参考 图4。
---第一个三元组【1,4,2】,根据4可以得到是个描述三元组,2表示有两个几何元素组成,即后两个三元组描述各自的几何A和几何B。
---第二个三元组【1,2,1】,为SDO_ELEM_INFO属性元素三元组,它描述的是几何A。根据 图4可以得到它是一条直线段,且该直线段的最后一个节点还是下一个几何B的开始点,即几何A和几何B有几何节点重合。
---第二个三元组【3,2,2】,为SDO_ELEM_INFO属性元素三元组,它描述的是几何B。根据 图4可以得到它是一条曲线段,该几何B的起点和几何A终点节点重合。
SDO_ORDINATES = (10,10, 10,14, 6,10, 14,10);---坐标系列
例子:用SQL 命令插入一个复杂多义线:
INSERT INTO beniy388 VALUES(
11, //其他的属性字段的值
'UpDooGIS', //其他的属性字段的值
MDSYS.SDO_GEOMETRY( //几何字段SDO_GEOMETRY的值
2002,
NULL,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,4,2, 1,2,1, 3,2,2), -- 复杂多义线
MDSYS.SDO_ORDINATE_ARRAY(10,10, 10,14, 6,10, 14,10)
)
);
发表评论
-
基于Canal的mysql数据库同步ElasticSearch方案实现环境搭建
2020-01-07 20:34 0基于Canal的mysql数据库同步ElasticSear ... -
【转载】【MySQL】sync_binlog innodb_flush_log_at_trx_commit 浅析
2016-11-01 19:18 679本文转载自:http://blog.itpub.net/2 ... -
浅谈乐观锁和悲观锁
2016-01-05 16:46 1914在数据库中 ... -
【转载】MySQL事务隔离级别详解
2015-12-22 19:46 923转载自:http://xm-king.iteye.com/ ... -
SQL Server 特殊字符查询处理
2013-07-26 17:34 709SQL Server 用 like 查询时,可用 % 代表任 ... -
SQL Server CONVERT函数
2013-06-26 14:57 1074本文转载自:http://weishang-java.ite ... -
数据库中的Schema
2013-06-15 10:53 1263本文转载自:http://blog.sina.co ... -
SqlServer数据库性能优化详解
2013-06-13 16:04 17648本文转载自:http://blog ... -
聚簇索引和非聚簇索引
2013-06-10 15:55 1497转载自:http://rbq10829.iteye.com/ ... -
三种查看MySQL数据库版本的方法
2013-06-10 15:19 1574本文转载自:http://www.weste.net/20 ... -
MySQL存储引擎
2013-06-10 14:03 961本文转载自:http://meng ... -
常见范式定义
2013-02-16 16:02 1304据库表结构设计时,遵 ... -
关于Spring编程事务分析
2012-11-18 15:33 1072转载自:http://sailinglee.iteye. ... -
SQLServer字典数据统计SQL
2012-07-26 18:08 1096SELECT 表名=case when a. ... -
SQLServer函数DB_ID和OBJECT_ID
2011-10-17 17:45 2311DB_ID 函数 [System] 返回数据库 ID 号。 语 ... -
SQLServer 获取SQL语句性能数据
2011-09-27 17:27 1259转载自:http://code.iteye.com/blog/ ... -
Union all 和 Union
2010-11-16 10:54 1311在Oracle数据中中如果需要用到数据合并,可以选择用U ... -
Oracle kill session
2010-11-10 17:37 1458第一步:查询被锁表的所关联的session信息 ... -
Oracle 特殊查询
2010-08-13 15:37 10281.查询次大记录: select max(to_n ... -
Oracle 存储过程
2010-08-13 14:11 1140create or replace procedure Pro ...
相关推荐
"使用Oracle Spatial对ArcSDE中的SDO_GEOMETRY类型数据进行空间操作" Oracle Spatial 是 Oracle 数据库中的一个空间数据处理组件,用于存储、管理和操作空间数据。ArcSDE 是一个空间数据引擎,用于存储和管理大规模...
Oracle Spatial 中的 SDO_GEOMETRY 类型详解 Oracle Spatial 中的 SDO_GEOMETRY 类型是对空间对象的几何描述,定义了空间对象的形状和位置。SDO_GEOMETRY 类型是 Oracle Spatial 的核心数据类型,用于存储和处理...
sdo_geometry 是 Oracle 中的一种特殊数据类型,用于存储空间数据。例如,下面是一个创建包含 sdo_geometry 数据类型的表的示例: ```sql CREATE TABLE G_GADGETS_TC2_LF_520 ( ID NUMBER, SHAPE SDO_GEOMETRY ); ...
MDSYS.SDO_CS.TRANSFORM_LAYER('MY_GEOMETRY_TABLE', 4326, 23033); END; ``` #### 六、总结 通过上述介绍,我们可以看到Oracle数据库提供了强大的空间数据处理能力,特别是对于坐标系统的转换。无论是单个空间...
在处理特定数据库特性时,如Oracle的SDO_GEOMETRY(Spatial Data Object Geometry)类型,EclipseLink提供了扩展机制来支持这些非标准的数据类型。本文将详细解释如何通过EclipseLink和JPA来映射和操作SDO_GEOMETRY...
在 Oracle Spatial 中,空间数据被存储在 SDO_GEOMETRY 字段中,这是一个符合 OpenGIS 规范的对象类型,包含了关于几何形状的信息,如类型(SDO_GTYPE)、空间参考ID(SDO_SRID),以及点(SDO_POINT)、线(SDO_...
**SDO_GEOMETRY** 是 Oracle Spatial 提供的一种特殊的数据类型,用于存储空间数据,广泛应用于 GIS(地理信息系统)、CAD(计算机辅助设计)及 CAM(计算机辅助制造)等领域。 - **SDO_GTYPE**: 表示几何体类型,...
SDO_GEOMETRY是Oracle Spatial中的核心类型,用于存储空间对象。书中会介绍如何创建和使用R-Tree索引来加速空间查询。 3. **空间查询与分析**:包括基于距离、覆盖、相交等的空间关系查询,以及缓冲区分析、网络...
在 Oracle 数据库中,有多种特殊数据字段类型,例如 SDO_GEOMETRY 字段,该字段用于存储空间几何数据。SDO_GEOMETRY 字段是一种复杂的数据类型,无法使用普通的数据类型来存储,因此需要使用 OCCI 来添加对该字段的...
通过深入研究 "OracleSpatial_OCI-code" 中的代码,开发者可以了解到如何利用 OCI 接口来操作 Oracle Spatial 中的空间数据,这对于开发地理信息系统(GIS)应用程序或进行空间数据分析是非常有价值的。这个压缩包中...
在Java开发环境中,Oracle Spatial 提供了对应的jar包,如 `sdoutl.jar`、`sdoapi.jar` 和 `sdotype.jar`,以便开发者能够集成空间功能到他们的应用程序中。 `sdoutl.jar`:这是 Oracle Spatial 的输出库,包含了...
尽管 `SDO_GEOMETRY` 是 Oracle Spatial 的核心几何类型,但在某些情况下,Oracle Spatial 也支持 `ST_GEOMETRY` 类型,这有助于与其他支持该类型的地理信息系统进行互操作。 ##### ArcSDE **1. ST_GEOMETRY** ...
- **SDO_GEOMETRY对象类型**:Oracle Spatial引入了一个名为SDO_GEOMETRY的内置对象类型,用于存储几何对象,如点、线、面等。它包含了坐标系统信息、维度信息和几何图形的边界框。 - **地理坐标系统和投影坐标...
Oracle Spatial存储机制:在Oracle的对象关系模型中,定义了一种新的对象模型,即空间对象类型SDO_GEOMETRY。该类型可以和其他数据类型一样单独存储于数据表中的某一列。SDO_GEOMETRY类型可以和其他数据类型一样...
在Oracle Spatial中,空间数据通常存储在具有SDO_GEOMETRY列的表中,该列定义了空间对象的类型、维度、坐标和元数据。通过Oracle的SQL扩展,可以执行复杂的空间查询、分析和操作,如缓冲区分析、空间关系判断和地理...
在Oracle Spatial中,所有空间数据都存储在空间字段SDO_GEOMETRY中。SDO_GEOMETRY是根据OpenGIS规范定义的一个对象类型,包括以下几个关键组成部分: - **SDO_GTYPE**:定义存储对象的类型。 - **SDO_SRID**:标识...
Oracle Spatial的数据模型包括对象关系模型和抽象数据类型SDO_GEOMETRY。对象关系模型可以存储和管理空间几何实体,抽象数据类型SDO_GEOMETRY可以存储矢量空间数据。 Oracle Spatial的数据组织结构是一个层次结构...
Oracle Spatial使用SDO_GEOMETRY数据类型来存储空间对象,该数据类型包含了对象的几何信息和坐标系统信息。此外,还支持多种空间参考系统,允许用户在不同坐标系之间转换数据。 三、空间索引 为了提高空间查询的...
Oracle Spatial的核心功能是通过元数据表、空间数据字段(SDO_GEOMETRY)和空间索引来管理空间数据。元数据表存储了空间数据的相关信息,如数据表名称、空间字段、坐标范围、坐标参考系(SRID)和维度信息。用户通常...