摘要:目前,人类活动所涉及到的信息80%以上是与空间数据有关。随着“数字地球”“数字城市”建设的大力进行,空间观测技术的不断发展,空间数据正呈几何级数增长。如何高效、快速地组织、存储和管理海量空间数据,满足国内数字化生产和国家基础地理信息产业建设的迫切需要,实现海量空间数据的存储与管理,是地理信息系统(GIS)亟待解决的主要问题之一。本文主要采用OracleSpatial技术来解决这一主要问题。
关键词:空间数据;OracleSpatial;空间数据管理;元数据
1引言
1998年1月,美国副总统戈尔在《数字地球—认识21世纪我们这颗星球》的报告中首次提出了数字地球的概念,掀起了继1992年信息高速公路之后的人类又一大壮举,即建设“数字地球”的空间信息革命[1]。数字地球的核心就是空间数据。
2目前空间数据管理现状
目前,各类空间地理数据主要以下列几种方式进行管理[2]。
1)文件管理方式
空间地理信息数据存放在操作系统的目录下,存储简单,管理的方法也比较简单,给人的感觉比较直观。数据备份烦琐,数据共享困难。
2)文件管理与数据库管理相混合
这种管理方式以文件管理为主,借助关系数据库的部分特点进行检索、查询所有的空间地理信息数据;这些数据存放在数据库体外的目录下,这样存在着文件管理方式的所有缺陷。
3)基于二进制大对象Blobs存储
在数据库中,全部利用1),2)数据库进行管理,二进制大对象缺乏语义信息,同时关系数据库无法在这些数据上支持基于内容的查询,也不能进行比较运算,无法提供高性能的存储和查询。
如何方便、安全、可靠的将空间数据在OracleSpatial中存储与管理,保证重要资源的有效管理,保证让每一项应用和每一个用户都能随时以适当的形式获取准确的信息,又能经济有效地实现对越来越庞大的海量数据的存储管理,这就是本文关注空间数据在OracleSpatial存储问题的主要原因。
3空间数据基于OracleSpatial的管理实现
OracleSpatial是Oracle公司推出的空间数据库组件,具备管理空间数据的能力。Oracle从9i开始对空间数据提供了较为完备的支持。OracleSpatial在9.2版本之前支持两种管理空间数据的方法:对象-关系模型和关系模型。但在9.2版本以后只采用对象-关系模型。对象--关系模型使用一张表,表中有一个类型为MDSYS.SDO_GEOMETRY的字段,用这个字段来存储空间实体的空间数据,表中的每一行记录存储一个空间实体。目前,空间数据库逐渐倾向于采用空间数据和属性数据一体化存储的方式,而且选择Oracle数据库作为存储空间数据和属性数据的数据库管理系统,特别是在Oracle推出Spatial之后,基于OracleSpatial的空间数据管理方式已逐渐被认同。
OracleSpatial主要通过元数据表、空间数据(即SDO_GEOMETRY字段)和空间索引来管理空间数据,并在此基础上提供一系列空间查询和空间分析函数,允许用户进行更深层次的GIS应用开发。OracleSpatial发展了最新的空间数据和属性数据的全关系型数据库管理方式,利用对象—关系型数据库来存储和处理空间数据,实现了空间数据和属性数据的一体化存储,优化了其索引机制,增加了二级过滤、缓冲区生成和叠加分析等过程。
OracleSpatial由以下的组件构成[3]:
规定一组Spatial所支持的空间数据类型的存储、语法和语
义模式,即MDSYS模式。
一组空间索引机制。
一组与空间分析操作、窗口查询、连接查询有关的操作和函数。
一套管理工具。
OracleSpatial采用的是分层数据模型,包括元素(elements),几何体(geometries)和层(layers)。几何体由若干元素组成,每一层又包括若干的几何体。
一个空间实体的空间信息存储在类型为SDO_GEOMETRY的字段中。在拥有该字段的任何一个表中,必须要有另外一列或多列,用于定义这个表的主码。下面是OracleSpatialSDO_GEOMETRY字段定义的一个例子[4][5]:
CREATETYPESDO_GEOMETRYASOBJECT(
SDO_GTYPENUMBER,
SDO_SRIDNUMBER,
SDO_POINTSDO_POINT_TYPE,
SDO_ELEM_INFOSDO_ELEM_INFO_ARRY,
SDO_ORDINATESSDO_ORDINATE_ARRAY);
SDO_GEOMETRY是一个对象类型的字段,由5个属性组成,一个空间实体的所有空间信息全部存储在这5个属性中。
SDO_GTYPE:说明该空间实体的类型,格式为dltt,其中:
1.d表示维数。
2.l表示三维线性参考系几何实体的线性参考度量,默认值为0。
3. tt表示几何实体的类型。
SDO_SRID:说明该空间实体所处的坐标系统。SDO_POINT:由X、Y、Z3个属性组成,用于表示几何类型为点的几何对象。如果SDO_ELEM_INFO和SDO_ORDINATES数组为空,则SDO_POINT中的X、Y、Z为点对象的坐标值;否则,SDO_POINT的值为NULL。SDO_ELEM_INFO:定义为一个可变长的数组。用来表明如何解释存储在SDO_ORDINATES属性中的坐标信息。SDO_ORDINATES:定义为一个可变长的数组,用来存储组成空间实体边界的点的坐标。
表3-1有效的SDO_GTYPE值
值 几何类型 说明
d000 未知几何体 Spatial忽略该几何体
d001 点 几何体包含一个点
d002 线串 几何体是一条线段
d003 多边形 几何体是一个多边形
d004 集合 几何体是不同类型元素的集合
d005 复合点 几何体有多个点
d006 复合线串 几何体有多条线段
d007 复合多边形 几何体有多个不相交的多边形
4 结束语
本文介绍了空间数据管理现状及存在的诸多问题,在此基础上,提出了基于OracleSpatial的空间数据的管理。
以下问题还需要进一步研究:
1)空间索引是空间数据管理系统的瓶颈之一,因此,如何设计一个快速、高效的空间索引算法是空间数据库面临的重要问题。
2)如何更好的利用Oraclespatial组件管理海量空间数据,使其更好的为空间数据挖掘服务。
3)如何更加方便使Oracle数据库性能优化与调整,数据的备份与恢复问题。
参考文献
[2]田茂义,张燕,卢秀山等.基于Java3D的三维景观网络发布.测绘科学,2006,31(4)
[3]何雄.OracleSpatial与OCI高级编程,北京:中国铁道出版社.2006
[4]藩农非.基于Oraclespatial的GIS空间数据处理及应用系统开发.计算机工程,2002,282.278-280
[5]胡金星,潘懋.基于Oraclespatial的WEBGIS解决方案.计算机工程与应用,2003,3184-186
[6]殷旭.三层C/S模式WEB数据库的应用[J].北京机械工业学院学报,2001,1627~30