APP下载

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

2014-09-24邹朝

城市建设理论研究 2014年25期
关键词:设计应用

邹朝

【摘要】本论文首先对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是空间操作符。

猜你喜欢

设计应用
BUBA台灯设计
有种设计叫而专
陈国兴设计作品
多媒体技术在小学语文教学中的应用研究
分析膜技术及其在电厂水处理中的应用
GM(1,1)白化微分优化方程预测模型建模过程应用分析
煤矿井下坑道钻机人机工程学应用分析
气体分离提纯应用变压吸附技术的分析
会计与统计的比较研究
匠心独运的场地设计画上完美句点