| GMLGIS体系结构及关键技术 |
随着GIS的快速发展及其在各个行业日益普及的应用,人们越来越认识到空间数据对于社会经济发展、人们生活水平提高的重要性,这也加快了人们获取和应用空间数据的步伐.然而由于各领域采用的GIS软件数据模型不统一,造成了各部门之间数据共享的困难,致使数据资源存在巨大浪费.基于此,诸多学者进行了大量的研究,以期解决这个数据共享的瓶颈难题.以往研究结果表明,基于数据格式转换的方法虽然在一定程度上能够解决此问题,却存在信息丢失问题,转换后的数据无法复原;基于空间数据转换标准的方法在一定程度上解决了不同数据格式之间缺乏统一的空间对象的描述基础问题,但许多国家制定的标准并不完善,并不能完全概括空间对象的不同描述方法;基于直接访问数据的方法需要为每个GIS软件开发读写不同GIS空间数据库的接口函数,现实中也不可能为每一种格式开发读写程序,这种方法只适用于有限的数据格式范围[1].直到OGC推出地理标识语言GML[2]后,才为此问题的解决带来了一丝曙光.
GML的最大优势在于为空间数据提供了统一的建模规范,并且中立于任何厂商,得到了大量软件产品的支持,因此,基于GML技术实现地理信息共享具有了现实的可能.从标准推出到现在,国家有关部门给予了大力支持,如“863项目”、国家自然科学基金项目等对GML进行了深入的研究,取得了大量的研究成果.但已有研究课题对GML技术的研究都围绕索引[3]、查询[4]、建模[5]、解析、压缩等方面展开,GML技术的实际运用更多的局限于空间数据建模及作为数据传输的中间格式而存在,数据接收端仍然需要把GML格式的空间数据转换为自由的数据文件进行相关的操作[6].这显然不符合一体化的共享机制的要求.基于原有技术成果的基础上,对实现基于GML数据格式的GIS系统的构建进行了深入研究.
1 GMLGIS体系结构 1.1 GMLGIS的概念及设计思想GMLGIS是一种采集、存储、管理、分析、显示和应用GML空间数据的计算机系统.
GMLGIS以GML数据为主要数据源,是能够融合GML解析、索引、查询等技术模块的一体化数据共享平台.GMLGIS旨在解决数据接收端必须把GML格式数据重新转换为其他数据格式的弊端,目的在于最终实现基于GML的地理信息的完全共享.
GML数据格式与传统数据格式在形态上发生了很大的差异,GML基于XML技术对地理信息进行编码,以文本数据形式存在,这与传统GIS软件厂商分别定义自己的二进制格式不同.GML数据模型提供了一套完整的规范用于对复杂多样的空间信息进行编码,包括空间对象的几何特性、属性特性、空间对象之间的拓扑关系、空间对象的时态特性等,传统方式对地物对象的定义完全可以用GML数据模型进行完整的表达.因此针对GML的数据处理技术也将与传统形式的处理技术有所差异.
如图 1所示,不管数据源的存储形式以二进制形式存在还是以文本数据形式存在,对于应用端处理程序来说,它所面对的就是“具体的地物对象模型”,只不过存储形式不同带来的数据管理有所差别,但要实现的目标是共同的,都是希望能够准确的表达地物对象.对于二进制形式的数据,系统要提供二进制文件访问接口实现数据的检索,对于GML文本数据,系统要利用文本数据处理接口技术来实现,如XML技术.
![]() |
| 图 1 异构数据源处理模型 |
对于地理信息语义层面的正确表达,GML规范已经做了详细的说明,GIS要素完全可以用GML模型进行定义.而系统的关注点更多的在GML要素的处理技术上,即针对此文本形式数据的有效读写、索引、查询等以及各技术模块的集成.只有建立了一个高效的GML数据处理平台,应用层才能够针对这些GIS对象数据设计编辑、分析、查询等高层的功能模块.
1.2 GMLGIS体系结构由上可知,GMLGIS主要针对地理信息共享模型GML而设计,与传统GIS的差异在于中间数据处理引擎.虽然GML得到了大量GIS软件厂商的支持,越来越多的部门开始采用GML作为数据的传输格式,但目前仍然有大量的依赖于传统GIS软件而存在的数据格式,为了实现资源的优化配置,GMLGIS要兼顾传统数据文件,实现相互的无缝集成与转换.经过系统中间件的处理,异构数据源以相同的GIS对象形式呈现于客户端.另外,为了提高数据的检索效率,系统中间件也将封装空间数据的索引和查询机制.系统由三层体系构成如图 2,主要内容如下.
![]() |
| 图 2 GMLGIS框架结构 |
(1) 数据库服务端.数据源以GML空间数据库为主要数据源,同时兼顾传统数据格式,GML数据和传统格式数据通过数据转换器进行交互访问,但数据最终以GML格式进行集成.
(2) GML数据引擎.作为系统的中间件,主要负责GML数据的处理,构建统一的GIS要素对象用于应用端的显示及操作.GML读取与处理器负责读取GML文档及GML空间数据库中的信息,为GML解析、GML文档构建提供读写接口.GML管理引擎的功能在于对解析的GML要素构建为应用层处理的几何对象,以及能够把应用端对空间数据的编辑操作重新生成GML片段对数据源进行更新,另外GML管理引擎针对解析的GML文档树以数据节点级别构建空间索引机制,提高数据的查询处理效率.对于直接以对象形式存在的数据,对象数据管理引擎负责处理.GML引擎实现了异构多源数据的有效集成,使其在应用层以统一的对象模型存在.
(3) 桌面应用程序.对以统一的GIS对象数据模型组织的空间信息,设计相关功能模块,构建GIS软件系统.
2 GMLGIS关键技术 2.1 一体化GIS对象模型数据模型是软件赖以生存的核心,对于GIS软件来说,几何对象模型决定了如何对其进行有效的组织,设计合理的几何对象模型是GIS软件高效运行的基础.GMLGIS是一款针对GML数据格式进行设计的数据处理平台,系统的核心着眼于文本形态的数据的处理.因为GML规范能够对多样的地理信息进行合理的表达,所以统一的对象处理模型以GML数据模型为基础进行设计,并作相应的扩展.. NET环境下,以GML定义的几何对象为基础,开发了基于GML几何对象模型的数据处理组件,如图 3所示.
![]() |
| 图 3 GMLGIS几何模型组件 |
2.2 GML解析机制
对GML数据进行高效读写是系统运行的基础[7],常用的解析方法主要有流模型机制和基于DOM的处理机制,但对于GML空间数据来说,由于其具有的空间特征,需要频繁的进行编辑处理操作,采用DOM技术让GML文本数据以节点树的形式存在大大方便了数据的处理,对节点的添加、修改与删除相比于流模型机制节约了大量的时间.DOM解析模型在数据量很大的情况下会占用较多的系统内存,致使处理效率降低.实验结果证明,一个数据集组织为一个GML文档,当前的硬件技术水平下,系统效率并没有明显的受到影响,随着技术的逐步发展,处理上百兆的文档是可行的..NET环境下,定义了用于操作XML的XMLReader和XMLWriter抽象基类用于XML文档及文档片段的读写,首先把文档载入内存,生成节点树,然后利用基类定义的属性和方法对文档进行遍历,GML基于XML技术而定义,同样可以利用此机制进行数据的处理.主要读取方法如表 1.
| 表 1 GMLParser类的主要属性方法 |
![]() |
| 点击放大 |
对于空间数据的编辑修改操作实际上是对GML节点树中的节点或片段进行添加、删除、或修改的操作,更新的信息只需调用XMLWriter类属性方法对数据源信息进行更新.
2.3 GMLGIS索引机制以往空间索引的建立是基于逻辑的文件地址[8],依据Geometry字段而设立,但对于GML数据来说,索引的建立是依据解析的节点树的节点位置而建立,即空间索引结构结合GML对象树而形成,这是与以往最大的不同之处.针对几何信息,无论采用R树、四叉树或是网格建立索引都是可行的,只不过无论采用哪种方式,索引是针对节点树形成,而不是文档的逻辑地址.
系统实验采用扩展四叉树索引方式[9],每个叶子节点存储本区域所关联的图元标识列表和本区域地理范围,对于跨区域的图元,采取让图元的MBR被一个最小的区域完全包含,以此减少数据的冗余,为了验证扩展四叉树索引机制的查询效率,文中选取了大小不等的6个数据源分别进行测试,数据源的类型包括了点、线、面和复杂的数据类型,分别从无索引、传统四叉树索引和扩展四叉树索引三方面验证结果如表 2.
| 表 2 3种索引在不同文档大小时的查询时间比较/ ms |
![]() |
| 点击放大 |
从效率分析数据可以看出,空间索引在减少数据冗余方面的作用是很明显的,无索引和带索引的查询时间相差很大.四叉树索引和扩展四叉树索引两者比较可以看出,扩展四叉树索引在减少数据冗余方面的作用效果明显,使查询效率提高了10 %~ 20 %,并且随着数据量的逐步增大,空间数据类型的复杂度的提高,扩展四叉树索引的作用更趋于明显,从实验数据可以得出,扩展四叉树索引机制的设想是可行的.
2.4 GML地图控件设计GIS控件是高级开发组件,首先它们允许开发人员建立和扩展GIS应用程序,其次它们提供图形用户界面(GUI).每个GIS控件都是一个嵌入式的组件,可以拖放到可视化设计环境的容器窗体或对话框中.一旦放在容器内,就可以改变GIS控件的大小和位置,以便与其他嵌入式组件,如命令按钮或组合框等一起为应用程序提供用户界面.每个GIS控件都会响应终端用户的键盘和鼠标交互而触发事件.响应发生在控件内的行为会触发一些其他的事件.例如,当装载数据到数据显示控件中时,会触发数据替换事件,拖动图形时会触发更新数据的事件.
一个数据集组织为一个GML文档,数据是几种几何类型的集合体.在解析过程中,每一种类型的几何数据单独进行构建,组织为一个要素图层,GML控件的设计也是每一层数据对应一个独立的数据类型.
3 系统实现对于解析得到的不同几何数据类型,依据GML统一数据模型依次构建对应的几何对象点、线、面和复杂几何类型.在应用端,每一种类型几何数据组织为一个独立的图层.针对这些图层、要素数据,依据组件设计的思想,开发具有独立功能的数据处理模块.文中系统具有基本的数据操作功能,如放大、缩小、移动、全局视图等[10].功能模块包括空间数据查询分析模块、图形数据编辑模块、属性数据编辑模块、基本量测模块;数据管理模块中包含了数据的相互转换,GML数据的导入和导出等,至此,具有GIS基本功能的基于GML的数据共享平台构建完成.由于篇幅所限,GMLGIS的系统功能不再一一罗列.
采用某市旅游数据为系统数据源,对其建立GML应用模型,依据应用模型建立了实例文档.数据源分别在基于ArcSDE的Oracle11g和设计完成的本原GML数据库中进行存储,以此进行验证系统对异构数据源的处理效率,系统主程序界面如图 4所示.
![]() |
| 图 4 GMLGIS主界面 |
4 结语
通过对GMLGIS数据模型构建、GML数据的解析、GML数据索引的建立及GML可视化控件的开发等关键技术进行了深入剖析,并把各关键技术进行融合,完成了基于GML的一体化数据处理平台——GMLGIS的设计与开发.随着GML标准得到越来越多的软件厂商的支持,基于GML技术将能够完全实现空间数据的共享.但鉴于现有软件的技术优势,短期内GMLGIS还不能够获得广泛的应用,因此,把GMLGIS与传统GIS进行有效的集成,借助传统GIS的优势使其得到发展是GMLGIS壮大的起点.
| [1] |
闾国年, 张书亮, 龚健雅, 等.
地理信息共享技术[M]. 北京: 科学出版社, 2007: 87-101.
|
| [2] |
OpenGIS Consortium, Inc. OpenGIS Geography Markup Language (GML) Implementation Specification 3.2.1.2007. [http://www.opengis.org].
|
| [3] |
兰小机, 闾国年, 刘德儿. GML空间数据查询与索引机制研究[J].
遥感学报, 2006(11): 854–856.
|
| [4] |
兰小机, 闾国年, 刘德儿. 基于XQuery的GML查询语言研究[J].
测绘科学, 2005(6): 99–102.
|
| [5] |
兰小机, 闾国年, 张书亮. GML3.0应用模式的开发及应用研究[J].
计算机工程, 2005(11): 34–37.
|
| [6] |
张书亮. GML在中国的研究进展[J].
地球信息科学, 2008, 10(6): 763–767.
|
| [7] |
兰小机, 闾国年, 张书亮. 一种通用GML 3.0解析引擎的设计与实现[J].
地球信息科学, 2005(1): 59–62.
|
| [8] |
唐立文, 汪荣峰, 廖学军. 基于四叉树的海量空间数据矢量多边形处理技术[J].
装备指挥技术学院学报, 2007, 18(3): 187–190.
|
| [9] |
郭薇, 郭箐, 胡志勇.
空间数据库索引技术[M]. 上海: 上海交通大学出版社, 2006: 100-103.
|
| [10] |
赵文彬, 周炜旻. 3S技术集成及其在地震灾害中的应用[J].
江西理工大学学报, 2009, 30(1): 23–24.
|
2010, Vol. 1




