基于Arc Engine的青藏高原生态地质环境遥感监测数据库系统建设
燕云鹏, 和正民
中国国土资源航空物探遥感中心,北京 100083

第一作者简介: 燕云鹏(1977-),男,博士,高级工程师,主要从事空间数据库的设计和GIS应用开发等研究。

摘要

首先介绍了青藏高原生态地质环境遥感监测数据库系统的课题背景,对于ArcEngine 的开发技术进行了重点介绍; 然后在分析数据背景的基础之上,对青藏高原生态地质环境遥感监测数据库的设计思路进行了详细描述,对系统的主体功能模块展开了全面剖析,列举分析了系统实现上的各个关键技术; 最后,对Arc Engine的空间数据库开发进行了总结并提出了一些建议。

关键词: Arc Engine; 数据库; 系统; 青藏高原; 生态地质环境; 遥感
中图分类号:TP79 文献标志码:A 文章编号:1001-070X(2010)增刊-0035-04
The Design and Implementation of Remote Sensing Monitoring Database System for Eco-geological Environment of Qinghai-Tibet Plateau Based on Arc Engine Techniques
YAN Yun-peng, HE Zheng-min
China Aero Geophsical Survey and Remote Sensing Center for Land and Resources, Beijing 100083, China
Abstract

Based on a summary of ArcGIS Engine techniques, this paper has recounted the background of Remote Sensing Monitoring Database System For Eco-geological Environment of Qinghai-Tibet Plateau. After analyzing each kind of data in the system, the authors describe the design thinking of the database in detail and analyze the implementation method of system functions. Key techniques and important suggestions are also given in this paper.

Keyword: Arc Engine; Database; System; Qinghai-Tibet Plateau; Eco-geological environment; Remote sensing
0 引言

本系统是对于原青藏高原生态地质环境遥感监测信息系统数据库部分的升级版本。原系统主要基于ESRI公司的MapObject 2.2控件开发, 虽然功能较为强大, 包括统计分析、系统管理及变化分析功能等, 但由于MapObject固有的局限性, 例如缺乏图层叠加函数, 要实现此功能必须间接实现, 即将参与叠加运算图层的所有图斑均进行遍历, 这样势必降低效率; 另外, 无法通过SDE将影像文件导入SDE Geodatabase, 而被迫直接将影像导入数据库。本数据库系统采用ArcGIS 9系列中功能强大的新组件ArcGIS Engine Developer Kit进行开发, 空间数据库引擎选用Arc SDE 9.0。

1 Arc Engine技术介绍

众所周知, ArcGIS 系统是基于组件ArcObjects 来建立及拓展的。ArcGIS Engine Developer Ki(简称ArcGIS Engine)将核心ArcObjects 组合在一起, 提供给开发者建立GIS应用程序。本系统使用的版本是ArcGIS Engine 9.0, 它使用新的模块化、可延伸、且跨越各种平台的架构, 比MapObject增加了许多功能。ArcGIS Engine是一组界面良好的跨平台、跨语言对象[1], 其强大功能体现在以下几个方面。

(1)提供标准GIS 架构。ArcGIS Engine 提供一个标准架构来开发GIS 应用程序。和成熟的GIS 应用程序(ArcMap 及ArcCatalog) 一样, ArcGIS Engine也是使用相同的软件对象组建的。ArcGIS Engine背后的架构非常完整并且可以延伸, 它包括了基础层级的几何功能, 以及专业地理数据库GIS 的编辑功能, 另外还有企业级的数据管理功能。

(2)支持跨平台。ArcGIS Engine 及其所有相关的对象及控件都适用于多种平台。所支持的平台主要有Microsoft Windows (NT 4、2000、XP及2003)、Solaris (2.8、2.9)、Linux (Redhat 7.3)、HP-UX (11.11)及IBM AIX (5.1)等。

(3)支持多种开发语言。ArcGIS 支持多种开发语言, 包括COM、 .NET、 JAVA及C++等。开发者可以使用多种不同的工具编写对象, 例如Windows系统下的Microsoft Visual Studio 环境, 或UNIX 上的C++ 程序编辑软件。

(4)整合开发者资源。ArcGIS Engine 开发者套件提供一套Help System, 它支持不同的API (Java、COM、.Net、 C++等), 另外还有对象模型图以及程序代码样本, 帮助开发者编写程序。套件中还包括了数个开发工具及工具软体, 配合在Engine 环境下书写代码。

(5)Optional Runtime功能。ArcGIS Engine Runtime 在每台计算机上都可得到授权。这允许多个ArcGIS 应用软件在同一台计算机上运行, 因此只需要一个单用户运行时(Runtime)授权成本。

2 系统设计
2.1 数据分析

2.1.1 遥感数据

遥感数据包括20世纪70年代和2000年两个时相, 为标准图幅遥感影像数据(1:25万)。

2.1.2 专题数据

专题数据包括荒漠化、第四纪地质(又分为断裂和地层两个子专题)、冰川雪线及地质灾害4种。

2.2 数据库设计

根据本项目的数据特点, 选择大型数据库管理系统Oracle 9.0.1作为后台, 数据表主要包括系统数据库主索引表和详细索引表。

2.2.1 主索引表

主索引表是对整个数据框架的概括, 如图1所示。

图1 青藏高原生态地质环境遥感监测信息系统数据库主索引框架

2.2.2 详细索引表

以主索引表为纲, 建立了6个详细索引表(限于篇幅, 只列出了一个索引表的详细结构), 以方便信息的分类组织和数据的查询使用。

(1) 标准图幅遥感影像索引表(StandardImgIndex)。如表1所示。

表1 标准图幅遥感影像索引

表1中, 影像编号为时相和图幅号的组合, 以标识不同时期的每一幅图像(例: I53C0010012000), 图幅号为标准新图幅号(10个字符), 时相为年份(4个字符), 图像类型分为MSS 、TM, SDE数据标识为遥感图像在SDE中的名称, 分辨率单位为m, 投影方式为Lambert-Conformal等。

(2) 重点地区遥感影像索引表(ZoneImgIndex)。

(3) 标准图幅专题现状索引表(StandardThemStateIndex)。

(4) 重点地区专题现状索引表(ZoneThemStateIndex)。

(5) 标准图幅专题变迁索引表(StandardThemChangeIndex)。

(6) 重点地区专题变迁索引表(ZoneThemChangeIndex)。

3 系统功能实现

图2是模块的主界面, 左边的树状目录是青藏高原整个项目数据的目录结构, 右面的列表则为具体某个数据集合中包括的分幅数据。

图2 数据管理模块主界面

3.1 矢量数据管理功能设计

主要包括对专题数据的导入、浏览、导出以及删除功能。通过这些功能, 可以实现各类数据的批量处理。

3.1.1 导入功能

矢量数据的导入功能如图3所示。鼠标右键单击选择“ 专题成果” 节点下某个需导入数据的叶节点, 选择“ 导入数据” , 在弹出的Vector to Geodatabase窗口中, 点击“ 选择专题数据” 按钮, 即可选择想要入库的数据(按“ Shift” 键可连续多选, 按“ Ctrl” 键可不连续的多选), 接着单击专题数据入库就可将所有的专题数据导入数据库中。然后提示输入专题索引信息, 如果单击“ 设置本幅” 则将逐幅的输入索引信息, 如单击“ 全部设置” , 则将当前图幅的设置应用到所有图幅。矢量数据导入过程中, 会随时对数据的入库情况进行检测, 如有异常会提示用户, 如果数据导入了数据库, 而索引信息导入失败, 那么系统会自动删除掉已入库的数据, 确保数据和索引信息一一对应。

图3 矢量数据导入界面

3.1.2 浏览功能

首先需要选择图幅, 在主界面右栏的数据列表下, 通过单击欲选择图幅“ 现状图ID” 或者“ 变迁图ID” 列内的选择框选择数据(可以多选)。接着双击鼠标, 或者快捷菜单选择“ 浏览全图” 或单击“ 浏览全图” 页, 就可以进行图幅浏览, 并可以实现对所选择数据的放大、缩小和平移浏览。另外, 选择树状结构的叶结点, 通过快捷菜单可以实现整个数据集的浏览功能。

3.1.3 导出功能

像浏览功能一样先选择图幅, 接着快捷菜单选择“ 导出数据” 就可以将已选图幅导出到本地客户端。数据导出前会检测本地文件夹下是否有同名文件, 有则提示改名。另外, 选择树状结构的叶结点, 通过快捷菜单可以实现整个数据集的导出功能。

3.1.4 删除功能

像浏览功能一样先选择图幅, 接着快捷菜单选择“ 删除” 就可以将已选图幅从数据库删除, 同时删除该图幅的数据索引信息。数据删除前会提示用户确认。另外, 利用快捷菜单, 通过选择树状结构的叶结点可以清空整个数据集, 即删除数据集内的所有数据。

3.2 栅格数据管理功能设计

栅格数据管理功能除了导出可以选择“ Erdas Image” 、“ TIFF” 、“ GRID” 3种格式外, 其余功能和矢量数据类似, 这里不再赘述。

4 系统实现的关键技术
4.1 ArcGIS Engine开发中的关键技术

(1)准确把握Engine中每个类的类型及其功能。在Engine开发中的类有3种: 抽象类(AbstractClass)、组件类(CoClass)和普通类(Class)。抽象类的子类定义公共接口, 一个抽象类将把它的部分或全部实现延迟到子类中, 因此, 一个抽象类不能被实例化[3]。一个组件类对象可以被直接创建, 普通类对象虽然不能直接创建, 但它可以作为其他类的一个属性或者从其他类的实例化来创建。例如作为抽象类的GeoDataset, 其类型对象不能被创建, 但是它的子类, 一个RasterDataset可以被创建。这个RasterDataset对象实际上在类的基础上实现了GeoDataset中定义的接口, 因此可以从RasterDataset来访问在基类对象GeoDataset中被定义的接口。

(2)选择合适接口。在COM中对对象的访问是通过接口来完成的, 因此不能像许多可视化控件那样, 可以直接通过其名称来调用属性或执行其方法。语句Dim outRasterWorkspace As IRasterWorkspaceEx其实就是定义了一个接口变量(准确地讲应该是一个指向接口的指针变量)。有了这个接口变量还不够, 必须实例化(对于class)或者直接用New语句申明一个对象(对于coclass), 语句Set outRasterWorkspace = pWorkspaceFact.Open(pConnectionProperties, 0)就是通过别的类对象的open方法来实例化创建了RasterWorkspace类的一个对象, 并且将上句的outRasterWorkspace接口变量作为该对象的缺省接口。对于下面的语句, 运行到pRasterDaterset.Delete会出错:

Dim pRasterDaterset As IRasterDataset

Set pRasterworkspace=pWorkspaceFact.Open(pConnectionProperties, 0)

Set pRasterDaterset=pRasterworkspace.OpenRasterDataset("SDE."& _lvDataView.ListItems(intCheckedArray(intI)).SubItems(1))

pRasterDaterset.Delete

如果分别变为:

Dim pRasterDaterset As IRasterDataset

Set pRasterworkspace=pWorkspaceFact.Open(pConnectionProperties, 0)

Set pRasterDaterset=pRasterworkspace.OpenRasterDataset("SDE."& _lvDataView.ListItems(intCheckedArray(intI)).SubItems(1))

Set pDataset = pRasterDaterset

pDataset.Delete

就不会出错了。原因是父类的接口具有某种特定的方法而子类没有。

4.2 其他方面的关键技术

(1)数据库技术。开发过程中数据库操作工作占了相当大的比重, 因此对数据库操作知识、Oracle连接、常用SQL查询语句, 甚至是更新和插入语句都要非常熟练, 另外, 对数据库表空间的管理能力也有一定的要求。

(2)模块设计中的注意事项。首先, 设计思路力求缜密。设计时要全局考虑, 要求越全面、越周详越好[4], 否则很容易出现事倍功半的效果, 甚至需要彻底返工。例如本模块数据存储结构设计中间就曾出现因为没考虑投影参数的问题而进行过大量的程序修改, 好在程序结构总体设计比较合理, 才没有彻底返工。

其次, 界面设计要人性化。功能界面的设计要力求方便用户。如在本模块的输入数据中, 只要输入的数据中包含正确的图幅号, 就可自动生成合法的入库数据名字, 极大提高了用户的操作效率; 自动保存用户当前打开的文件路径, 下次用户打开即为上次关闭的路径, 方便用户的再次输入; 另外, 在删除数据时, 会提醒用户确认, 避免误操作。

5 结论

本文对青藏高原生态地质环境遥感监测数据库系统的开发实践进行了全面总结, 从总体设计、界面功能实现以及关键技术等多个层面展开了综合分析和深入探讨, 对以后相关空间数据库的建设工作和类似信息系统的开发项目具有一定的参考和借鉴意义。

The authors have declared that no competing interests exist.

参考文献
[1] ESRI. Deliverin Custom GIS Application with ArcGIS Engine[J]. ESRI White Pager. February 2004. [本文引用:1]
[2] 张清浦. 电子政务与GIS[J]. 测绘科学, 2003, 28(1): 5-9. [本文引用:1]
[3] http://www.3sdn.net/gis2dev/ao/2009-03-05/275.html. [本文引用:1]
[4] 宋关福, 钟耳顺. 组件式地理信息系统研究与开发[J]. 中国图象图形学报, 1998(4): 303-317. [本文引用:1]