APP下载

Oracle Spatial空间数据存储管理技术的应用研究

2011-11-14王云帆

测绘通报 2011年6期
关键词:数据类型空间数据对象

王云帆

(太原理工大学计算机科学与技术学院,山西太原030024)

Oracle Spatial空间数据存储管理技术的应用研究

王云帆

(太原理工大学计算机科学与技术学院,山西太原030024)

通过论述Oracle Spatial空间数据模型,对Oracle Spatial的特点进行探讨,结合Oracle数据库在空间数据方面的特性,应用数据库技术实现空间数据管理与操作,以及空间数据查询、分析、转换等功能。

Oracle Spatial;空间数据存储;空间数据库

一、概 述

Oracle Spatial是Oracle数据库为实现快速、高效地存取、分析空间数据而将相关函数和过程集成在一起的专用组件。它以对象关系数据模型作为存取和管理空间信息的基础,应用面向对象操作技术将存储在Oracle Spatial中的多种元素信息相关联,以便进行拓扑分析与其他操作。它为数据库管理系统管理空间数据提供了完全开放的体系结构。其提供的各种功能在数据库服务器内完全集成。用户通过SQL定义和操纵空间数据,可以访问标准的Oracle特性,如灵活的n层体系结构、对象功能、Java存储过程以及强健的数据库管理工具等,从而具有了保证数据的完整性、可恢复性和安全性等特性,而在基于文件的或复合的传统GIS、WebGIS体系结构中几乎不可能获得这些特性。

二、空间数据模型

1.存储模型

Oracle Spatial在空间数据模型方面,其结构如图1所示。

图1 Oracle Spatial的空间数据几何学存储模型

图1中,空间图层是具有相同属性集的多种几何体的集合,而几何体是空间要素的集合,由对象元素的有序集组成,对象元素则是几何体的基本组成单元。

Oracle Spatial以点、线、多边形3种几何类型为基本对象元素来抽象描绘现实世界的各种地物。另外,作为一种对象关系型数据库,它还引入了圆弧、圆环、优化矩形、复合线串、复合多边形这些图形作为基本对象元素(可看作由点、线、多边形3种最基本的类型的混合而组成的,如图2所示)。这种模型的优点在于与用户的交互过程中只需处理涉及的层,因而能够对用户的需求作出快速反应。

图2 部分Oracle Spatial支持的基本对象元素及对应几何学图形

2.基于SDO_GEOMETRY的对象数据类型

为实现对空间数据的存取、索引、分析等操作,在Oracle Spatial的对象关系模式中,定义了一种空间对象类型MDSYS.SDO_GEOMETRY,该类型和其他数据类型一样可以单独存储于数据库表的某一列中。该类型的结构定义如下

其中各个参数的含义如下:

1)SDO_TYPE定义了存储在SDO_GEOMETRY对象中的基本几何体类型(如点、线、面等),SDO_ GTYPE的值是一个4位数,格式为“ditt”。其中,d表示维数(如二维、三维或四维);i表示一个三维线性参考系中几何体的线性参考系测量维的值(默认为0);tt表示几何体的类型(00到07表示了8种目前常用的几何类型,08到99以备将来使用)。如SDO_GTYPE取值2003则表示二维的多边形。表1是SDO_GTYPE的有效取值说明。

表1 SDO_GTYPE说明

2)SDO_SRID表示了空间对象所在的坐标系统,即空间参照系统。Oracle遵照OpenGIS规范定义了一组数字来表示不同的坐标系统,并存储在表MDSYS.CS_SRS中。如果SDO_SRID的值不为空,那么它一定可以从表MDSYS.CS_SRS中的SIRD字段中找到,并且这个值还必须插入到空间元数据视图USER SDO_GEOM_METADATA的SRID字段中。

3)SDO_POINT只用于在SDO_GEOMETRY对象中存储点数据,当SDO_ELEM_INFO与SDO_ ORDINATES不为空时,SDO_POINT被忽略。

SDO_POINT的数据类型为对象类型 SDO_ POINT_TYPE,如果用户具有DBA角色,那么可利用视图ALL_SOURCE或DBA_SOURCE来执行下面的查询进而了解SDO_POINT_TYPE对象类型的定义。

此外,如果用户直接以用户MDSYS登录数据库,也可以用视图USER_SOURCE来查询抽象数据类型的结构定义。

4)SDO_ELEM_INFO描绘了存储在 SDO_ GEOMETRY对象中存储各基本元素的数据结构,数据类型为SDO_ELEM_INFO_ARRAY变长数组类型,同样也可以按照上面介绍的方法来查询其定义。

5)SDO_ORDINATES对象类型用来存储空间对象的坐标值,其数据类型也是一个变长数组类型SDO_ORDINATE_ARRAY。

SDO_ORDINATE_ARRAY变长数组由几何体元素的坐标组成,而这些坐标的存储方式在SDO_ ELEM_INFO_ARRAY中已经进行了预定义。

三、Oracle Spatial空间数据管理技术特点

1.空间数据特征

Oracle Spatia是顺应GIS数据存储与管理的需求而发展起来的,是在关系数据库管理系统上增加MDSYS.SDO_GEOMETRY对象数据类型和对应的空间数据管理函数,从而实现对空间数据提供存储和管理服务。利用Oracle Spatial可以在单个数据库实例中实现非结构化、有嵌套关系的空间、属性数据的统一存储和管理。它将同一图层的空间对象存储在同一张关系表中,属性数据则作为普通的关系表列进行存储,当涉及空间数据时使用对象模型,并将其作为一列存储于关系表中。为了加速对空间信息的查询,Oracle Spatial将空间索引功能引入数据库引擎,这是一项重要特性。Oracle Spatial为建立空间数据的索引提供了基于线性四叉树(Quad-tree)的索引方案和基于参照树(R-tree)的索引方案,用户可以根据需求任意选择。一般的,当为外部地理数据建立了空间数据表之后就可以建立空间索引。Oracle Spatial利用Oracle的可扩展性框架将空间索引创建和查询处理的接口与SQL引擎紧密集成,且索引创建和维护的语法只是对CREATE、ALTER及DROP语句的扩展。

实体之间的空间关系是以与它们关联的几何体的位置为基础的,而最普通的空间关系是以拓扑和距离准则为基础的。欧几里得空间中两个对象A和B之间的二元拓扑关系是以两个对象A与B在它们内部、边界和外部如何相互作用为基础的。这称为两个对象间拓扑关系的9相交模型,它们对A和B提供了相互之间的排他性和完全的覆盖,这些关系是包含、被包含、覆盖、被覆盖、分离、相等、重叠和接触。对于决定两对象间拓扑关系的9相交模型,Oracle Spatial能够完全支持,而其他关系都能够通过对上述8种关系进行组合而推导出来。

2.Oracle Spatial与ArcSDE的比较

ArcSDE是Esri推出的一种空间数据管理方法,它利用GIS计算模式和关系数据库的优势,较好地解决了海量数据(大型数据库)、多用户共享、快速响应的要求,在全球范围内得到了广泛的应用。

Oracle Spatial和ArcSDE虽然出自两个不同的软件公司,但却有着相似的目标,都是为了能更好地满足用户对空间数据管理和使用的需要,但两种技术还是存在一些差别。

1)两者定位不同。Oracle Spatial强调的是使Oracle DBMS所管理的数据“空间化”,实际上是在原来的数据库模型上增加了对ADT(抽象数据类型)、用户自定义数据类型(包含对象类型)的支持,并进行了空间数据模型的扩展;而ArcSDE则更着重于空间数据的应用,它所提供的API函数可供MapObjects、ArcView、Visual C++、Visual Basic、Java调用,方便了二次开发,而非数据库的空间化。

2)Oracle Spatial的对象相关VARRAY方式是所谓的“白箱”,即数据所包裹的内容是可以直接访问和操纵的;而ArcSDE的方式是所谓的“黑箱”,客户端不能在数据库表一级直接作底层数据对象结构中的内容,而是以对象形式对数据进行管理的。“白箱”的好处是其客户端的授权用户可以直接通过SQL访问数据。

3)在安装Oracle DBMS时,只要在安装向导的提示下选择支持Oracle Spatial之后基本不再需要其他的配置工作;由于ArcSDE采用的是C/S计算模式,故一般要在服务器端和客户端分别安装ArcSDE套件,并做必要的配置工作,相比而言,多了一些维护工作。

四、Oracle Spatial基本操作和应用示例

1.空间操作符和函数

标准SQL不具备操作空间数据的能力,因此Oracle Spatial对标准SQL进行了扩充,提供了完整的空间数据操作函数,使得用户可以直接在SQL语句中使用这些函数。但这些函数仅限于在Oracle数据库平台上使用。

Oracle Spatial提供多个函数/运算符用以操纵空间数据,包括SDO_WITHIN_DISTANCE、SDO_FILTER、SDO_NN、SDO_GEOM.UNION()、SDO_GEOM.DIFFERENCE()、SDO_GEOM.INTERSECT()、SDO_ GEOM.LEGNTH()、SDO_GEOM.AREA()等。

在Oracle Spatial中,还提供了对空间聚合、基于函数的索引、大地测量坐标、空间索引分区以及线性参考等新特性的支持,在性能上比以前有了大幅提高。

2.应用示例

下面以一个简单的示例来介绍Oracle Spatial的基本操作。如图3所示。

图3 可乐的兴趣区域

至此,利用Oracle Spatial完成了空间数据存储和管理操作。

五、结束语

Oracle Spatial作为Oracle数据库中的一个GIS组件,通过提供一个对象数据类型SDO_GEOMETRY、索引功能和多个针对SDO_GEOMETRY的函数、运算符等,能够在Oracle数据库中实现对空间数据的存取、索引、分析等操作。采用Oracle Spatial存储、管理空间数据,易于解决数据共享、分布式处理、网络通信、开放式开发、并发控制、网络化集成、跨平台运行及数据安全恢复机制方面的问题。Oracle Spatial空间数据操作与标准SQL操作类似,易于使用,这使得以Oracle Spatial为服务器端的空间数据、属性数据和元数据得到统一管理,为空间数据的管理和利用带来方便。

[1] 何原荣,李全杰,傅文杰.Oracle Spatial空间数据库开发应用指南[M].北京:测绘出版社,2008.

On the Application of Oracle Spatial Spatial Data Memory Management Technique

WANG Yunfan

0494-0911(2011)06-0076-04

P208

B

2011-04-06

王云帆(1990—),男,北京人,本科生,主要从事空间数据库的学习。

猜你喜欢

数据类型空间数据对象
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
详谈Java中的基本数据类型与引用数据类型
如何理解数据结构中的抽象数据类型
GIS空间数据与地图制图融合技术
攻略对象的心思好难猜
基于SeisBase模型的地震勘探成果数据管理系统设计
基于熵的快速扫描法的FNEA初始对象的生成方法
相似度计算及其在数据挖掘中的应用
元数据驱动的多中心空间数据同步方法研究
区间对象族的可镇定性分析