基于MapX &oracle9i空间分析的研究

2014-03-15 01:56杨福涛
科技创新与应用 2014年8期
关键词:空间分析对象

摘 要:文章探讨Oracle数据库系统中对空间数据存储的解决方案,并介绍针对对象-关系模型下空间数据的存储和管理,着重讨论基于Oracle9i的GIS 空间分析和基于MapX的GIS 空间分析,并就这两种方式的空间分析的性能进行比较。

关键词: MapX;空间索引;对象-关系模型;空间分析

1 MapX与 Oracle9i 简介

MapX是MapInfo公司向用户提供的具有强大地图分析功能的ActiveX控件产品。由于它是一种基于Windows操作系统的标准控件,因而能支持绝大多数标准的可视化开发环境如Visual C++、Visual Basic、Delphi、PowerBuilder等。编程人员在开发过程中可以选用自己最熟悉的开发语言,轻松地将地图功能嵌入到应用中,并且可以脱离MapInfo的软件平台运行。 [1] [5]

Oracle Spatial 是部署企业范围的空间信息系统和基于 web 以及基于位置的无线应用程序的基础。它为位置信息提供数据管理,这些信息包括道路网络、无线服务边界以及地理编码的客户地址,它们正在推动着新兴的在线、移动以及车载远程信息处理市场领域创新性的产品开发。[2]

2 Oracle Spatial的对象-关系模型

Oracle Spatial是针对存储在oracle8i或Oracle9i中的空间元素集合提供的一种SQL的模式来完成存储、输出,修改和查询的功能。

Oracle支持两种表现空间元素的机制和模型:

(1)关系式模型。用多行记录和字段类型为Number的一张表来表示一个空间实体。

(2)对象-关系模型(Object-Relational Model)。这种模型使用数据库表,表中有一个为MDSYS_GEOMETRYD的字段,用一行记录来存储一个空间实体。

Oracle Spatial的对象-关系模型实现方法由一组对象数据类型,一种类型的索引方法以及在这些类型上的操作符组成。

一个空间实体用一行具有SDO_GEOMETRY字段的记录来存储,具体存储为对象类型。空间索引的创建和维护由基本的SQL语句完成。这样一来,原来需用多行,多列存储的空间实体,使用Oracle Spatial的对象-关系模型,只需要一行记录就可以完成存储。大大方便了应用系统的数据处理,维护等操作。

3 三、MapX与Oracle空间分析函数的比较

Oracle公司向Mapinfo公司提供了一种比ODBC更底层的数据接口OCI,通过此接口可以直接向Oracle数据库存取Mapinfo空间地图。MapX通过OCI和Oracle9i建立同步连接,而通过ODBC和其他数据库建立连接。

3.1 缓冲区生成的比较

在MapX中,缓冲区的生成有两种方法:FeatureFactory.BufferFeatures方法和Buffer函数。

在Oracle中,生成缓冲区的函数为SDO_BUFFER。

下面是分别以哈尔滨市区,宾县,和尚志为图元,做缓冲试验,distance值分别为5 km,10 km,15 km,25 km,35 km,45 km时,MapX和Oracle所用时间(单位:秒)如下:

哈尔滨市区:MapX所用时间:0.4687,0.5625,0.6406,0.7500,0.8

125,0.9218

Oracle所用时间:4.9531,2.3437,1.8437,1.2656,0.9687,0.8125

宾县:MapX所用时间:1.5313,2.5000,3.0468,4.0468,4.6250,

5.1250

Oracle所用时间:11.7031,6.6875,4.6718,2.8125,2.5781,2.3125

尚志:MapX所用时间:7.2656,7.9687,8.5781,12.2812,12.5312,

14.5468

Oracle所用时间:50.1562,21.9062,17.8906,8.1875,8.2968,7.07

81

3.2 拓扑查询的比较

MapX中的拓扑查询我们以Layer.Serachwithdistance为例,在Oracle中的拓扑查询我们以函数:SDO_WITHIN_DISTANCE为例。

下面是以黑龙江全省水系分布图为底图做实验,以松花江一段为指定空间对象,分别查询其周围20km,30km,50km,100km,300km,500km,600km范围内的所有水系时,分别基于MapX 和Oracle查询所用的时间(单位:秒)如下:

MapX所用时间:0.0468,0.1406,0.2812,0.6562,3.4687,3.7968,

3.9687

Oracle所用时间:0.0468,0.3437,0.5937,1.2031,8.6875,13.328

1,12.7656

4 结束语

Oracle spatial以Oracle9i独特的对象关系-模型作为存储、管理空间地物的基础,使用面向对象操作的原理把存储在Oracle Spatial中的多种元素信息相关联,以进行拓扑分析与其它操作。利用Oracle Spatial可以在单个数据库实例中,实现非结构化、有嵌套关系的空间、属性数据的统一存储和管理。

在基于Oracle9i的GIS 空间分析和基于MapX的GIS 空间分析的比较中,在以Oracle数据库作为MapX底层数据库,以大地坐标系为坐标系统,空间索引为R-tree时,在生成缓冲区的实验中,MapX生成缓冲区所用时间随着distance值的增大而增大,而Oracle中函数SDO_GEOM.SDO_BUFFER生成缓冲区所用时间随着distance 值的增大而减小。对同一图元做缓冲区实验时,在distance 值较小的情况下, MapX生成缓冲区的速度比Oracle中函数SDO_GEOM.SDO_BUFFER生成缓冲区的速度快,而当distance 值较大时,情况正好相反。在拓扑查询实验中,由实验数据可以看出在distance 值比较小的情况下(即数据量比较小)的情况下,二者的查询速度基本想同,但随着distance 值的增大(数据量也随之增大),Oracle拓扑查询的速度就不及MapX拓扑查询的速度。可以看出,两者之间有利有弊。

用Oracle Spatial单独进行空间、属性数据的统一存储、管理工作,把数据与GIS操作平台和开发程序分离开来,增加了数据管理的灵活性和简易性,减少了冗余数据,提高了数据的使用效益,有利于建立数据间的联系并在此基础上进行数据挖掘。

参考文献

[1]http://mapinfo.com.

[2]Oracle技术网站[EB/OL]http://otn oracle .com.

[3]Oracle技术资料(Oracle 817 Spatial guide)[z].

[4]陆晓春,于禹生,杨哲宇.在oracle中实现空间数据的对象化和拓扑化存贮[J].测绘学院学报,2001,(4).

[5]齐锐.屈昭琳.用MapX开发地理信息系统[J].北京:清华大学出版社2003.

[6]林天峰.Oracle程序设计:科学出版社,2003.

作者简介:杨福涛 (1980.4-),男,黑龙江省齐齐哈尔市(籍贯),现职称:测绘工程师,学历:本科,研究方向:测绘工程。endprint

猜你喜欢
空间分析对象
神秘来电
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
攻略对象的心思好难猜
浙江省麻雀数量变化与环境关系研究
无锡市低效用地再开发监管平台设计与应用
基于GIS的汽车4S店空间布局特征研究
基于熵的快速扫描法的FNEA初始对象的生成方法
区间对象族的可镇定性分析
基于Matlab的水下碍航物可视化研究
基于遥感与GIS空间分析的电力优化选线研究