FREE_浅析Oracle Spatial

上传人:飞*** 文档编号:7205052 上传时间:2017-09-18 格式:DOC 页数:8 大小:258KB
返回 下载 相关 举报
FREE_浅析Oracle Spatial_第1页
第1页 / 共8页
FREE_浅析Oracle Spatial_第2页
第2页 / 共8页
FREE_浅析Oracle Spatial_第3页
第3页 / 共8页
FREE_浅析Oracle Spatial_第4页
第4页 / 共8页
FREE_浅析Oracle Spatial_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《FREE_浅析Oracle Spatial》由会员分享,可在线阅读,更多相关《FREE_浅析Oracle Spatial(8页珍藏版)》请在金锄头文库上搜索。

1、1浅析 Oracle Spatial邬 金(广东海事局海测大队,广州)A Brief Analysis on Oracle SpatialWU JIN摘要:出于 HPD 研究工作的需要,本文简要介绍了 HPD 中空间数据的组织与管理机制的底层平台Oracle Spatial 中空间数据组织与管理,并初步探讨了基于 OO4O 的 Oracle Spatial 接口程序的实现技术,为进一步发挥 HPD 效能提供了理论参考。关键词:Oracle Spatial、HPD1 引言CARIS HPD(以下简称 HPD) 是 CARIS 公司开发的一套完整的海事测绘生产数据库解决方案。它为管理数字海道测量及

2、其他数据提供一个独特创新的、高效、集成的多用户,无缝的数据库环境的工具。CARIS 公司自 1999 年酝酿研发 HPD,2001 年首推商业版(HPD V1.0) ,现已更新到 V2.7 版本。利用 HPD,我们能真正实现数据采集、管理、维护以及纸海图和电子海图制作的一体化,从根本上改变现有的测绘生产模式、工艺流程和管理理念。鉴于它应用于海事测绘数据管理方面的优越性,为加强我国海事测绘数据管理和提高海图编绘技术,部海事局于 2007 年将其引进。为确保项目引进和后期制图生产顺利实施,尽快发挥 HPD 效能,我国海事测绘部门现正如火如荼的进行利用 HPD 试生产方面的研究。可以预见,在不久的将

3、来,HPD 必将成为海事测绘生产的主要生产平台。而如何进一步的发挥 HPD 的效能,使其于我们已有的航测资料系统等已有系统实现资源共享等将会成为一个重要研究方向。要实现 HPD 与我们现有系统的对接,研究 HPD 中空间数据的组织与管理机制是必不可少的基础。本文正是我在研究 HPD 中空间数据的组织与管理机制的底层平台oracle spatial 中的一些粗浅体会, ,现整理出来与大家分享,抛砖引玉。也希望随着大家研究的深入,我们能更大发挥 HPD 在海事测绘生产管理中的作用。2 Oracle SpatialOracle Spatial 是 Oracle 公司推出的空间数据库组件,通过 Ora

4、cle 数据库系统存储和管理空间数据。Oracle 从 9i 开始对空间数据提供了较为完备的支持。我通过这段时间的学习、归纳,总结了它具有以下特点:1、Oracle Spatial 可以使用户和程序员无缝的把空间数据集成到企业级软件中,并充分利用 Oracle9i 数据库的高可信度,高灵活性和高性能。空间数据是任何具有定位信息的数据。具有地理参考的数据库,如地址,电话号码,邮编等,可以通过地理编码服务进行数据分析。同时 Oracle Spatial 将使基于空间关系的数据分析更加容易,例如获取在给定范围内最近的商店的位置。Oracle9i Spatial 动态扩展了 Oracle9i 支持自定

5、义数据的能力,并且具有比以前更快的信息处理能力和更高的性能。2、Oracle Spatial 提供了一整套函数和过程集合,使在 Oracle9i 中对空间数据的存储,访问和分析更加快捷和高效。这意味着空间和属性数据现在能在一个物理数据库中进行管理,因而减少了高端处理及调整和同步异步数据集时的复杂度。通过使用 Oracle9i 扩展了的索引特征,Oracle Spatial 获得了比以前的版本更佳的性能。23、Oracle Spatial 在 DBMS 中,对空间数据的管理提供了完全开放的体系。Oracle Spatial 提供的这种功能完全被集成到了数据库服务器中。用户通过 SQL 语句定义和

6、控制空间数据,并且访问标准的 Oracle 特征,如灵活的 N 层结构,面向对象,健壮的数据管理工具,Java 存储过程。这实际上确保了数据的完整、恢复和安全性,这些实际上是不可能通过别的机制获得到的。除此之外,新的地理编码框架使在 Oracle8i 数据库中对被地理编码的空间点数据进行地址匹配,存储和接受更加容易。4、在 Oracle9i 版本中,空间数据能被存储在相关表中和被当作抽象对象数据类型。这种新的对象数据类型(SDO_GEOMETRY)被核心 Oracle9i 引擎所直接支持。相关对象类型的使用使空间数据在 Oracle9i 数据库中能被快速而高效的存储,访问和分析。这有助于开发人

7、员在符合工业标准的数据库服务器中更加容易的存储定位信息,而不需要求助于外部索引和函数以获得所需要的性能。空间数据的用户可以访问标准的 Oracle9i 的特征,并且可以获得增强的特性,如大数据库容量限制的增加,更快的数据备份和恢复。5、由于 Oracle Spatial 本身是 ORACLE 数据库的一个特殊的部分,因此可以用ORACLE 提供的程序接口来对 Oracle Spatial 管理的空间数据进行操作。目前,ORACLE 数据库主要提供两种接口方式对其数据进行存取:6、除常见的数据库编程接口外,ORACLE 还提供了面向 C 语言程序员的编程接口OCI(Oracle Call Int

8、erface,简称 OCI) ;或者用 ORACLE 本身所提供的 OLE 对象(Oracle Objects for OLE,以下简称 OO4O)来快速访问有关数据库。3 Oracle Spatial 空间数据组织与管理Oracle Spatial 主要通过元数据表、空间数据字段(即 SDO_GEOMETRY 字段)和空间索引来管理空间数据,并在此基础上提供一系列空间查询和空间分析的函数,让用户进行更深层次的 GIS 应用开发。Oracle Spatial 使用空间字段 SDO_GEOMETRY 存储空间数据,用元数据表来管理具有 SDO_GEOMETRY 字段的空间数据表,并采用 R 树索

9、引和四叉树索引技术来提高空间查询和空间分析的速度。下面简要介绍下具体内容。3.1 元数据表说明Oracle Spatial 的元数据表存储了有空间数据的数据表名称、空间字段名称、空间数据的坐标范围、坐标参考信息以及坐标维数说明等信息。用户必须通过元数据表才能知道ORACLE 数据库中是否有 Oracle Spatial 的空间数据信息。一般可以通过元数据视图(USER_SDO_GEOM_METADATA)访问元数据表。元数据视图的基本定义为:(TABLE_NAME VARCHAR2(32),COLUMN_NAME VARCHAR2(32),DIMINFO MDSYS.SDO_DIM_ARRAY

10、,SRID NUMBER);其中,TABLE_NAME 为含有空间数据字段的表名,COLUMN_NAME 为空间数据表中的空间字段名称,DIMINFO 是一个按照空间维顺序排列的 SDO_DIM_ELEMENT 对象的动态数组,SRID 则用于标识与几何对象相关的空间坐标参考系。SDO_DIM_ELEMENT 对象的定义如下所示:Create Type SDO_DIM_ELEMENT as OBJECT (SDO_DIMNAME VARCHAR2(64),SDO_LB NUMBER,SDO_UB NUMBER,3SDO_TOLERANCE NUMBER);其中,SDO_DIMNAME 是空间维

11、名称,SDO_LB 为该空间维的左下角坐标,SDO_UB 为该空间维的右上角坐标,SDO_TOLERANCE 为几何对象的表示精度。 例如:CREATE TABLE GEOD_CITIES(LOCATION MDSYS.SDO_GEOMETRY,CITY VARCHAR2(42),STATE_ABRV VARCHAR2(2),POP90 NUMBER,RANK90 NUMBER);INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) VALUES (GEOD_CITIES, LOCATION, M

12、DSYS.SDO_DIM_ARRAY (MDSYS.SDO_DIM_ELEMENT(LONG, -180.0, 180.0, 0.0000005), MDSYS.SDO_DIM_ELEMENT(LAT, -90.0, 90.0, 0.0000005) ),NULL); 3.2 空间字段说明Oracle Spatial 的空间数据都存储在空间字段 SDO_GEOMETRY 中,理解 SDO_GEOMETRY是编写 Oracle Spatial 接口程序的关键。SDO_GEOMETRY 是按照 OpenGIS 规范定义的一个对象,其原始的创建方式如下所示:CREATE TYPE sdo_geome

13、try 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_GTYPESDO_GTYPE 是一个 NUMBER 型的数值,用来定义存储对象的类型。SDO_GTYPE 是一个 4个数字的整数,其格式为 dltt,其中 d 表示几何对象的维数;l 表示三维线性参考系统中的线性参考值,当

14、d 为 3 维或者 4 维时需要设置该值,一般情况下为空;tt 为几何对象的类型,Oracle Spatial 定义了 7 种类型的几何类型,目前,tt 使用了 00 到 07(包括一种用户自定义类型) ,具体见表 1。另外,08 到 99 是 Oracle Spatial 保留的数字,以备将来几何对象扩展所用。 数值 几何类型 说明dl00 未知类型 用于存放自定义类型的集合对象,如样条曲线等dl01 点 几何对象包含 1 个点dl02 直线或者弧线 几何对象由直线段和弧线段组成dl03 多边形 几何对象包含一个多边形,该多边形可以含有洞dl04 多种形状集合 点、线、多边形超集,可包含所有

15、类型dl05 复合点 几何对象包含 1 个或多个点,是点类的超集dl06 复合线 几何对象包含 1 个或多个线串dl07 复合多边形 几何对象可以包含多个外环、多个不相交的多边形(表 1 SDO_GTYPE 数据类型说明)42、SDO_SRIDSDO_SRID 也是一个 NUMBER 型的数值,它用于标识与几何对象相关的空间坐标参考系。如果 SDO_SRID 为空(null) ,则表示没有坐标系与该几何对象相关;如果该值不为空,则该值必须为 MDSYS.CS_SRS 表中 SRID 字段的一个值,在创建含有几何对象的表时,这个值必须加入到描述空间数据表元数据的 USER_SDO_GEOM_ME

16、TADATA 视图的 SRID 字段中。Oracle Spatial 规定,一个几何字段中的所有几何对象都必须为相同的 SDO_SRID 值。 3、SDO_POINTSDO_POINT 是一个包含 X,Y,Z 数值信息的对象,用于表示几何类型为点的几何对象。如果 SDO_ELEM_INFO 和 SDO_ORDINATES 数组都为空,则 SDO_POINT 中的 X,Y,Z 为点对象的坐标值,否则,SDO_POINT 的值可以忽略(用 NULL 表示) 。Oracle Spatial 强烈建议用SDO_POINT 存储空间实体为点类型空间数据,这样可以极大的优化 Oracle Spatial 的存储性能,提高查询效率。 4、SDO_ELEM_INFOSDO_ELEM_INFO 是一个可变长度的数组,每 3 个数作为一个元素单位,用于解释坐标是如何存储在 SDO_ORDINATES 数组中的。本文把组成一个元素的 3 个数称为 3 元组。一个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号