酷文首页  
站内搜索:
网站地图 | RSS订阅 | 收藏本站
经济论文
证券金融
工商管理
会计审计
法学论文
医药论文
社会论文
教育论文
计算机论文
艺术论文
哲学论文
财政税收
财务管理
公共管理
理学论文
政治论文
文学论文
工学论文
文化论文
实用文档
应用文
自考成考
演讲稿
法律文书
子栏目导行↓
网站赞助商↓
本类热点↓
本类更新↓
热门标签↓
网摘收藏↓

多源空间数据无缝集成(SIMS)技术研究

作者:宋关福
来源:论文网
点击:
载入中...
加入时间:2008-04-25
字体大小:[  ]

 

一般而言,空间数据引擎只提供存储、读取、检索、管理数据和对数据的基本处理等功能,不负责进行空间分析和复杂处理。但是基于第三方API(如:Oracle Spatial和ESRI SDE)开发的引擎可以提供更多功能。

一般而言,空间数据引擎动态连接库的实现有三种方式,即:标准API函数DLL、C++类库DLL和OLE 自动化DLL。由于空间数据引擎结构复杂、函数接口多;标准API函数DLL中的函数缺乏层次性,不便使用,而且不符合面向对象程序设计的潮流,不适合空间数据引擎。OLE自动化DLL中可以实现一系列具有标准接口的二进制对象,对象层次清晰,接口标准,适合建立空间数据引擎。

为了达到更高的数据访问速度,本研究采用了C++类库DLL。但是,使用C++类的DLL只能使用编译连接,无法实现DLL的动态载入。

使用C++的虚函数机制可以较好地解决这个问题。虚拟空间数据引擎也是一个单独的动态连接库,这个动态连接库定义了数据访问需要的所有类,比如数据源(DataSource)或工程(Project)、数据集(Dataset)或图层(Layer)、记录集(Recordset)等,这些类的大部分函数定义为纯虚函数,比如打开工程、关闭工程、创建数据集、读写空间数据、读写属性数据、查询、建立空间索引等等。由于有纯虚函数,因此虚拟空间数据引擎中的数据访问类不可实例化。每个数据引擎动态库继承虚拟空间数据引擎中的类,并且实现所有的虚函数(否则无法实例化)。为了实现C++类库的动态挂接,在每个空间数据引擎中还需要实现一个API函数来创建相应的数据源或者工程。假设虚拟空间数据引擎中的数据源类为CDataSource,该类在SQL Server引擎中的继承类为CSqlDataSource,那么这个API函数可以这样实现:

 

 

CDataSource *CreateDataSource()

{

CSqlDataSource *pDataSource = new CSqlDataSource;

return (CDataSource *)pDataSource;

}

该函数负责创建相应的数据源派生类,主调函数可以在不知道CDataSource的子类名(此例中为CSqlDataSource)的情况下创建该类的实例。其他的类如数据集、记录集等由数据源创建。一旦对象被创建,所有的操作均使用虚基类定义的函数接口进行,但是实际的运行将会自动调用子类的函数。

这种方式可以充分利用C++的优点,如继承,多态、封装等,而且不影响系统响应速度。尽管从概念模型上看,数据提供者总是通过虚拟空间数据引擎(数据代理)传递给消费者,实际上并没有任何多余的内存拷贝和数据转换,所谓的数据传递变成了调用接口的传递,这种传递通过C++类库的虚函数机制实现,不影响效率。因此,SIMS采用的是紧凑三层结构,与Web三层体系不同。

四、SIMS技术在GIS软件开发中的应用

中国科学院地理信息产业发展中心研制的新一代组件式GIS软件—SuperMap 2000采用了SIMS技术。为了适应不同层次应用的需要,SuperMap创造性地实现了以多种方式存储、管理GIS数据。除了支持其他GIS软件的一些文件格式(如:Oracle Spatial和ESRI SDE)外,SuperMap自定义的数据结构也提供了多种方式,包括: Access MDB数据库、SQL Server数据库和OLE复合文档(SuperMap SDB文件)。

这几种存储方式适合于建立不同层次的应用。MDB和SDB数据一般存储在本地、SQL Server、Oracle、SDE数据库一般存放在网络服务器。因此,SuperMap通过SIMS技术进行分析和数据处理时,不仅实现了数据格式无关,而且实现了存储位置无关。

SuperMap 2.0提供的引擎包括:SDB、MDB、SQL Server、Oracle、SDE。其中SDB、MDB、SQL Server使用了SuperMap的内部格式,Oracle、SDE基于相应的API开发工具实现。在以后的版本中,将会逐步提供Arc/Info Coverage、MicroStation DGN、ArcView Shape、AutoCAD DWG等引擎以直接访问其他GIS/CAD软件的数据格式(图2)。

 

1、SDB引擎

SDB(SuperMap Spatial Database)引擎是SuperMap 2.0中唯一的文件型空间数据引擎。这种引擎采用传统的文件+数据库混合存储方式。SDB引擎的一个数据工程包括两个文件,扩展名为SDB的文件存储空间数据,采用OLE复合文档技术;扩展名为SDD的文件为属性数据库,采用Access 的MDB数据库格式。由于SDB文件采用了复合文档技术,因此提供了在一个SDB工程中存储多个数据集的能力。这一点与Arc/Info Coverage、MapInfo Table文件等技术不同。SDB主要面向中、小型系统和桌面应用,目的在于提高效率,弥补纯数据库引擎在这方面的不足。

2、MDB引擎

MDB引擎是一种纯数据库引擎,采用Access的MDB数据库作为数据存储介质。基于Microsoft的Jet数据引擎实现。MDB引擎把空间数据和非空间数据存储在同一个MDB数据库中,真正实现了空间数据和非空间数据的无缝组织,同时便于维护数据。一个MDB文件中可以存储多个数据集。与SDB一样,MDB引擎面向中小型桌面应用系统,一个MDB的最大空间容量为1G。

3、SQL Server引擎

这是一个基于大型数据库SQL Server的纯关系数据库空间引擎。SuperMap中采用微软提供的开发工具DB Library实现。与SDB、MDB引擎一样,本引擎采用SuperMap自定义的数据结构。SQL Server引擎适合建立大型空间数据应用。

4、Oracle引擎

Oracle也是一种基于纯关系数据库的空间数据引擎。与前三种引擎不同,Oracle引擎的数据结构采用Oracle Spatial的空间数据存储方案。由于Oracle Spatial目前缺乏对TIN、DEM等三维数据存储的支持,功能上受到限制。Oracle引擎适合建立大型空间数据应用。

5、SDE引擎

与Oracle引擎一样,SDE引擎也是一种基于纯关系数据库的空间数据引擎。本引擎采用ESRI的SDE开发工具实现。该引擎中的一些基本数据处理和分析将直接调用SDE本身提供的功能。SDE引擎适合建立大型空间数据应用。

 

七、结论

多源空间数据无缝集成(SIMS)技术具有多格式数据直接访问、格式无关数据集成、位置无关数据集成、多源数据复合分析等特点,有效地解决了不同格式数据资源的综合利用转贴于 酷文网-论文下载中心 http://www.coolwen.net


共3页: 上一页 [1] 2 [3] 下一页

网摘收藏:
免责声明 | 关于我们 | 广告联系 | 友情链接 | 网站地图 | 共同合作
免费论文 毕业论文 毕业论文范文 酷文网(www.coolwen.net) 版权所有 coolwen.net 2007,All Rights Reserved
E-mail:hui_love#tom.com(为防止垃圾邮件请把#换成@) 点击这里给我发消息 点击这里给我发消息
湘ICP备07003917号