OracleSpatial空间数据库的设计及应用

时间:2022-08-01 06:51:34

OracleSpatial空间数据库的设计及应用

【摘要】本论文首先对OracleSpatial简介进行了说明,然后通过OracleSpatial空间数据进行了分析。对于应用程序的开发,论文详细阐述了每个环节出现的一些问题以及针对这些问题,制定有效的推进方法。

【关键词】空间数据库,设计,应用

中图分类号:S611文献标识码: A

一、前言

当OracleSpatial空间数据库的设计还有很大的发展空间,因此对OracleSpatial空间数据库的设计及应用就显得尤其重要,投空间数据库的设计,直接关系到应用的顺利进行。

二、OracleSpatial简介

OracleSpatial支持3种基本集合类型,以及由这些类型组成的几何体。3种基本类型是:点,线串和N点多边形,它们都是二维的。二维点是两个坐标X和Y组成的元素。线串由两个或更多的点按一定的顺序排列构成,这些点定义了线段。线串可以由直线段,弧线段或二者混合构成。多边形由连接的线串构成,这些线串形成封闭环形,多边形的内部也就因而确定了。因为多边形由线串构成,这就意味着一个多边形可以包含一些直线边和一些圆弧边。

空间数据模型是一个由元素\几何体和层组成的层次结构。空间层由几何体构成,几何体又是由元素构成。元素是几何体的基本组成部分。例如,元素可以作为公用事业供应点(点),道路(线串)或者国界(多边形)的模型。在有洞的多边形中(例如湖中的小岛),多边形的外环与内环被视为两个不同的元素,它们共同构成一个复杂的多边形。一个几何体就是一个用户空间特征的表示,以基本元素的有序集合为模型而构成。

三、OracleSpatial空间数据

1、地理元数据管理模式

OracleSpatial采取元数据表和空间数据表共同管理地理空间数据[1]。MDSYS是OracleSpatial的管理用户,MDSYS方案中,表SDOGEOMMETADATATABLE存储所有上载到Oracle中的MapInfo地图信息,每条记录描述了一个空间数据表的图形列名、图形的坐标维名称,以及各维坐标的上界、下界和精度等:表SDOINDEXMETADATATABLE存储与索引相关的信息,如:被索引的列名,索引的方式,索引的级别,索引的所有者等。

2、OracleSpatial空间数据存储模式

关系式模型:用多行记录和字段类型为Number的一张表来表示一个空间实体。关系式模型:这种模型使用数据库表,表中有一个类型为MDSYSSDOGEOMETRY的字段,用一行记录来存储一个空间数据实体。两者的主要区别为:对象关系模式下用列来存储对象,而关系模式下用二维表来存储对象。Oracle为管理空间数据提供了对象、关系模式SDO(SpatialDataObject),同时提供优秀的空间索引机制。OracleSpatial的对象、关系模型实现方法有一组对象数据类型、一种类型的索引方法以及在这些类型上的操作符组成。Oracle9iSpatial空间数据表的每条记录存储了一个空间实体(对象)的属性和图形信息。属性信息为数字或文本,是非对象数据:图形信息,即空间数据,存放在字段名为GEOLOC,字段类型为SDOGEOMETRY的对象类型记录中。拥有该字段的任何一个表,必须要有另外一列或几列用于定义这个表的唯一主键。

3、MapInfo上载空间数据

MapInfo提供了一个数据上载工具EasyLoader,可以用手工的方式把Tab文件上载到OracleSpatial数据库中。EasyLoader通过ODBC向一般关系数据库上载数据,通过OCI向OracleSpatial上载数据。上载数据时,选择OracleSpatial,输入用户名和口令,在图层列表中选择要上载的Tab文件,以及记录数目,选择Upload即可上载数据。上载结束后EasyLoader会有提示信息。通过EasyLoader上载空间数据后,在OracleSpatial中会自动创建PRINX或MI_PRINX字段作为地图索引主关键字段。注意在上载选项中,要事先选定是向已有的表添加数据,还是新建/覆盖一个表。

四、应用程序的开发

1、创建数据库

建立一个数据库,需许多准备工作和计划,主要有:设计数据库逻辑结构;设计数据库物理结构;选取全局数据库名(GlobalDatabaseName);决定字符集(CharacterSet)。上述准备工作做好后,开始进行本次开发所涉及的空间数据库的实现工作,具体如下:

(一)、空间图层

在Oracle数据库中空间几何数据按照空间图层、几何图形、元素来分层组织。空间图层是由几何图形构成,而几何图形是由元素来构成的。空间图层的设计至关重要。

(二)、查询和索引

OracleSpatial中,空间几何数据的查询分为两步:根据条件检索出要查询内容的范围,在服务器端完成:在上步所查询的范围中进一步检索,找出所要查询的空间几何数据,在服务器或客户端进行。OracleSpatial使用两极查询模型来解决空间查询和连接问题。OracleSpatial两级是指为解决该问题,使用两种不同的操作。如果两种操作同时被执行,那么将返回最精确的结果集。

OracleSpatial使用二叉树索引完成第一步查询工作,将所要查询的空间几何图形用小方格覆盖,以确定空间几何图形的范围。索引又可以分为固定索引和混合索引。固定索引就是索引时,对所有图形都以相同的小方格覆盖,而混合索引只对重点区域进行方格覆盖。32MapX从OracleSpatial中读取数据通过*tab或*gst文件,MapX可以实时的存取空间数据库中的数据。*tab文件是一个文本文件:*gst是MapXGeosetManager的生成格式,是多个tab文件的集合。一旦创建了文件,开发人员可以在程序中实现地图数据的存取功能,其中涉及到数据库的连接及数据的读取。通过图层对象Layers的Add方法,可以添加图层到集合并在地图上显示。具体的调用方法:[Layer=]LayersAdd(LayerInfo,[position])其中:LayerInfo可以是Tab文件的完整路径,也可以是一个LayerInfo对象:position是该添加的图层在地图中的叠加顺序。LayerInfo描述了新图层的定义,利用LayerInfoAddParameter方法可将LayerInfo的参数添加到LayerInfo对象中,格式如下:LayerInfoAddParameter(name,value)。

MapX访问空间数据,首先访问元数据表,获取Oracle9iSpatial空间数据表的描述信息。通过Oracle9i的安全验证,被赋予适当权限的合法用户,可读取元数据表信息。其次访问某一用户的空间数据表,获取详细的空间数据。

2、基于OracleSpatial的空间分析

(一)、OracleSpatial的空间分析函数

OracleSpatial的空间分析主要依赖于空间数据操作函数,主要有:用于相交查询的SDORELATE,SDOFILTER,SDOWITHINDISTANCE:用于缓冲区分析的SDOBUFFER,用于面积、长度计算函数的SDOGEOM.AREA,SDOGEOM.LENGTH等。本文重点介绍用于相交查询的SDORELATE函数。该函数的功能为确定与某一指定空间对象具有相交关系的对象(集合)有哪些。调用规则为:SDOFILETER(geometry1,geometry2,params),其中,参数geometry1和geometry2是要判断关系的空间对象,params是空间操作符。

(二)、空间分析实现的原理

本系统的空间分析主要是分析图元之间的相交和包含关系,通过选择操作对象和作对象,来查找符合条件的图元。图元之间的相交和包含分析需要获取源图元和目标图元,应用程序利用循环语句获取图元的ID,然后用rvs=dsRowValues(ftr)进行显示。在应用程序中,获取源图元和目标图元,选择条件关系后即可进行查询分析。首先,要进行数据库连接,其次,设置必要的变量,用于存储或取得源图元和目标图元的信息,利用ADO方式与数据库进行交互操作:再次,书写关系语句,并再次调用ADO进行查询,如果得到符合条件的记录,就设置数组先保存旧的特征到一个临时数组中,然后动态分配数组,保存临时特征值:最后把符合条件的目标图元显示在图层上。

一个空间对象在OracleSpatial数据库表中对应一行,通过MapX向Oracle写入一个空间对象,如果没有指明索引字段,直接插入数据,将会导致错误,MapX提供了KeyField属性来指定索引字段。索引字段指定后,可以将该实体的记录插入到Oracle中。数据库连接完成后,书写插入语句Insert*Into*,利用ADO方式进行数据库的操作。点、线段、折线的插入原理一样。

4、性能优化

空间数据文件的打开需要非常大的内存来存储所有图层的数据,为了提高应用系统的性能,需进行优化,尤其是当系统执行重画操作,显示专题图以及标签时,从DBMS取出的图层可以设置为CACHE。文件打开时,Cache中的数据将被清空,重载从数据库服务器传来的MBR定义的数据。如果没有执行地图漫游和缩放操作,也想重新载入Cache数据来获取区域中的图形数据,则可以使用LayerRefresh方法。

五、结束语

随OracleSpatial空间数据库的设计的不断完善,OracleSpatial空间数据库的设计及应用将会得到更多人的重视,在计算机技术快速发展背景下,OracleSpatial空间数据库的设计及应用将发挥着重要的作用。

参考文献

[1]戴技才,刘南,刘仁义.OO4O对Oracle9iSpatial的空间数据访问及管理[J].计算机应用研究,2003

[2]藩农菲.基于OracleSpatail的GIS空间数据处理及应用系统开发[J].计算机工程,2002

[3]霍宏,胡福乔.用MapX访问Oracle中的空间数据[J].计算机应用,2003

[4]雷英杰,王涛.一种Oracle空间数据库的设计与实现[J].计算机工程与应用,2002

上一篇:变电站一次设备运行问题及其处理 下一篇:智能化建筑电气设备安装技术与接地保护措施分...