1998年4月15日星期三

组件式地理信息系统研究与开发

(原文发表于:《图形图像学报》1998年4月期)

宋关福 钟耳顺

(中国科学院地理信息产业发展中心,北京 100101)

[摘要] 组件式地理信息系统是适应软件组件化潮流的新一代地理信息系统。本文阐述了组件式地理信息系统的概念和技术基础,讨论了组件式地理信息系统的特点,及其与万维网地理信息系统之间的关系,进而探讨组件式地理信息系统的设计与开发。

[关键词] 地理信息系统、组件式软件、组件式对象模型、万维网


引言

经历三十多年的发展,地理信息系统(Geographic Information Systems,缩写为GIS)正在形成完整的技术系统并逐渐建立其理论体系。GIS应用也已形成一个多层次和不同尺度的应用格局,成为信息产业的重要组成部分[1]。然而,计算机技术和全球信息网络技术的飞速发展,对GIS产生了巨大的冲击,组件式GIS(Components GIS)和万维网GIS(WebGIS)等新兴技术应运而生。GIS正在进入一个崭新的发展阶段。

组件式软件技术已经成为当今软件技术的潮流之一[注1],为了适应这种技术潮流,“GIS软件象其他软件一样,已经或正在发生着革命性的变化,即由过去厂家提供了全部系统或者具有二次开发功能的软件,过渡到提供组件由用户自己再开发的方向上来”[注2]。无疑,组件式GIS技术将给整个GIS技术体系和应用模式带来巨大影响。

一、组件式GIS的概念

GIS技术的发展,在软件模式上经历了功能模块、包式软件、核心式软件,从而发展到组件式GIS和WebGIS的过程。传统GIS虽然在功能上已经比较成熟,但是由于这些系统多是基于十多年前的软件技术开发的,属于独立封闭的系统。同时,GIS软件变得日益庞大,用户难以掌握,费用昂贵,阻碍了GIS的普及和应用。组件式GIS的出现为传统GIS面临的多种问题提供了全新的解决思路。

组件式软件是新一代GIS的重要基础, 组件式GIS是面向对象技术和组件式软件在GIS软件开发中的应用。认识组件式GIS,首先需要了解所依赖的技术基础-组件式对象模型和ActiveX控件。
COM是组件式对象模型(Component Object Model)的英文缩写,是OLE(Object Linking & Embedding)和ActiveX共同的基础。COM不是一种面向对象的语言,而是一种二进制标准。COM所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之后,模块之间就可以通过称之为“接口”的机制来进行通信[2]。COM标准增加了保障系统和组件完整的安全机制,扩展到分布式环境。这种基于分布式环境下的COM被称作DCOM(Distribute COM)。DCOM实现了COM对象与远程计算机上的另一个对象之间直接进行交互。

ActiveX是一套基于COM的可以使软件组件在网络环境中进行互操作而不管该组件是用何种语言创建的技术。作为ActiveX技术的重要内容,ActiveX 控件是一种可编程、可重用的基于COM的对象。ActiveX控件通过属性、事件、方法等接口与应用程序进行交互。

一些软件公司专门生产各种用途的ActiveX控件,比如:数据库访问、数据监视、数据显示、图形显示、图像处理,甚至三维动画等等。几个著名的GIS软件公司把COM技术应用于GIS开发,纷纷推出由一系列ActiveX控件组成的组件式GIS软件,比如Intergraph公司的GeoMedia、ESRI的MapObjects、MapInfo公司的MapX等,国内的北京朝夕公司推出了MapEngine,我们也研制了自己的组件式GIS软件--ActiveMap,并在几个大型GIS应用项目中成功应用[3]。

组件式GIS的基本思想是把GIS的各大功能模块划分为几个控件,每个控件完成不同的功能。各个GIS控件之间,以及GIS控件与其它非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。控件如同一堆各式各样的积木,他们分别实现不同的功能(包括GIS和非GIS功能),根据需要把实现各种功能的 “积木”搭建起来,就构成应用系统。

二、组件式GIS与WebGIS

国际互联网(Internet)的迅速崛起,并在全球范围内飞速发展,使万维网(World Wide Web简称WWW或者Web)成为高效的全球信息发布渠道。随着人们对GIS应用的需求,利用Internet技术在Web上发布和出版空间数据,以供用户浏览、查询并获取所需的空间数据和应用,是GIS发展的必然趋势,这就产生了WebGIS。从WWW的任意一个节点,Internet用户可以浏览WebGIS站点中的空间数据,以及制作专题图,进行各种空间检索和空间分析。

许多WebGIS软件包均采用HTML标准,活动内容采用Java applets(SUN 标准)或者 ActiveX(Microsoft 标准)进行传递[4]。新型的分布式面向对象WebGIS可以采用CORBA/Java或者DCOM/ActiveX技术进行开发[5]。

ActiveX控件不仅可以用于一般的ActiveX容器程序 (比如Visual Basic、Delphi等) ,而且能嵌入Web页面中。任何ActiveX控件都可以设计成Internet控件,作为Web页面的一部分,Web页面中的控件通过脚本(Script)互相通信。因此,组件式GIS是WebGIS的一种解决方案,而基于这一方案的WebGIS通常比基于Java的运行速度快[5]。

三、组件式GIS的特点

组件式GIS的发展符合当今软件技术的发展潮流,同时也极大地方便了应用和系统集成。同传统的GIS比较,这一技术具有以下几方面特点:

1. 高效无缝的系统集成

一个系统的建立往往需要对GIS数据、基本空间处理功能与各种应用模型进行集成。而系统集成方案在很大程度上决定了系统的适用性和效率,不同的应用领域、不同的应用开发者所采用的系统集成方案往往不同。归纳起来,基于传统的GIS基础软件的集成方案主要有四种模式(图1)。
模式一: 在GIS基础软件与应用分析模型之间,通过文件存取方式建立数据交换通道。在这种集成方式中,GIS与应用分析模型通过中间文件格式交换数据(图1-),不适合于大量而频繁地交换数据的情况,而且GIS基础软件与应用分析模型相互独立,系统整合性差。

模式二: 直接使用GIS软件提供的二次开发语言编制应用分析模型(图1-)。解决了模式一的缺陷,但是GIS所提供的二次开发语言大都不能与C、C++、FORTRAN等专业程序设计语言相比,难以开发复杂的应用模型。

模式三: 利用专业程序设计语言开发应用模型,并直接访问GIS软件的内部数据结构(图1-)。应用模型开发者可以根据自己的意愿选择使用何种高级语言开发复杂的应用模型,但是直接访问GIS软件数据结构增加了应用开发的难度。





模式四: 通过动态数据交换(DDE)建立GIS与应用模型之间的快速通信(图1-)。这是在DDE技术发展起来以后,对第一种集成方式的改进,可以避免频繁的文件数据交换所带来的效率降低的毛病,也避免了从GIS外部直接访问GIS数据结构的代价。但是,GIS与应用模型仍然是分离的,这种拼接是“有缝”的。

不论采用以上何种系统集成模式,传统的GIS软件在系统集成上都存在缺陷。组件式GIS提供了解决以上问题的理想方案。组件式GIS不依赖于某一种开发语言,可以嵌入通用的开发环境(如:Visual Basic和Delphi)中实现GIS功能,专业模型则可以使用这些通用开发环境来实现,也可以插入其它的专业性模型分析控件。因此,使用组件式GIS可以实现高效、无缝的系统集成(图2)。


2. 无须专门GIS开发语言

传统GIS往往具有独立的二次开发语言,如Arc/Info的AML、MGE的MDL、MapInfo的MapBasic等。对GIS基础软件开发者而言,设计一套二次开发语言是不小的负担,同时二次开发语言对用户和应用开发者而言也存在学习上的负担。而且使用系统所提供的二次开发语言,开发往往受到限制,难以处理复杂问题。组件式GIS则不需要额外的GIS二次开发语言,只需实现GIS的基本功能函数,按照Microsoft的ActiveX控件标准开发接口。这有利于减轻GIS软件开发者的负担,而且增强了GIS软件的可扩展性。GIS应用开发者,不必掌握额外的GIS开发语言,只需熟悉基于Windows平台的通用集成开发环境,以及组件式GIS各个控件的属性、方法和事件,就可以完成应用系统的开发和集成。目前,可供选择的开发环境很多,如Visual C++、Visual Basic、Visual FoxPro、Borland C++、Delphi、C++ Builder以及Power Builder等等。

3.大众化的GIS

组件式技术已经成为业界标准,用户可以象使用其他ActiveX控件一样使用组件式GIS控件,使非专业的普通用户也能够开发和集成GIS应用系统,推动了GIS大众化进程。组件式GIS 的出现使GIS不仅是专家们的专业分析工具,同时也成为普通用户对地理相关数据进行管理的的可视化工具。

4.成本低

由于传统GIS结构的封闭性,往往使得软件本身变得越来越庞大,不同系统的交互性差,系统的开发难度大。组件式GIS提供实现空间数据的采集、存储、管理、分析和模拟等功能,至于其他非GIS功能(如关系数据库管理、统计图表制作等)则可以使用专业厂商提供的专门组件,有利于降低GIS软件开发成本。另一方面,组件式GIS本身又可以划分为多个控件,分别完成不同功能。用户可以根据实际需要选择所需控件,最大限度地降低了用户的经济负担。

四、组件式GIS的设计与开发

设计组件式GIS,需要根据功能划分为多个控件。划分控件需要根据不同的数据结构和系统模型进行具体分析,要考虑以下几个方面的问题:(1) 控件间差别最大、控件内差别最小;(2) 纯设计用模块与将随集成系统发布的模块分开,例如地图符号编辑、线型编辑器应与空间查询分析等模块分开;(3) 相同显示窗口的模块尽可能设计在同一个控件里;(4) 处理相同数据文件的模块尽可能设计在同一个控件里;(5) 剔除空间查询分析控件中不必要的内容,减少Internet下载的数据量。

考虑到以上因素, 组件式GIS可以划分为数据采集与编辑控件、图像处理控件、三维控件、数据转换控件、地图符号编辑/线性编辑控件、空间查询分析控件等。其中一些无须进行二次开发的模块不一定以组件方式提供,比如数据采集、数据转换、符号编辑/线型编辑等模块可以用独立运行程序方式提供,数据转换模块还可以编译成动态连接库。

传统GIS软件与用户或者二次开发者之间的交互,一般通过菜单或工具条按钮、命令以及二次开发语言进行。组件式GIS与用户和客户程序之间则主要通过属性、方法和事件交互[6](图3)。



属性(Properties) 指描述控件或对象性质(Attributes)的数据,如:BackColor (地图背景颜色)、GPSIcon (用于GPS动态目标跟踪显示的图标)等。可以通过重新指定这些属性的值来改变控件和对象性质。在控件内部,属性通常对应于变量(Variables)。

方法(Methods) 指对象的动作(Actions),如:Show(显示)、AddLayer(增加图层)、Open(打开)、Close(关闭)等。通过调用这些方法可以让控件执行诸如打开地图文件、显示地图之类的动作。在控件内部。方法通常对应于函数(Functions)。

事件(Events) 指对象的响应(Responses)。当对象进行某些动作时(可以是执行动作之前,也可以是动作进行过程中或者动作完成后),可能会激发一个事件,以便客户程序介入并响应这个事件。比如用鼠标在地图窗口内单击并选择了一个地图要素,控件产生选中事件(如ItemPicked)通知客户程序有地图要素被选中,并传回描述选中对象的个数、所属图层等等信息的参数。

属性、方法和事件是控件的通用标准接口,适用于任何可以作为ActiveX包容器的开发语言,具有很强的通用性。

支持ActiveX组件开发的程序设计语言都可以用来开发组件式GIS软件,比如目前比较流行的Visual C++、Borland C++、Visual Basic、Delphi等等,其中前两种效率高、功能强,较为常用。

组件式GIS开发要注意几个方面的问题:(1)优化的代码和高效的算法 尽管COM技术的二进制通信具有很高的效率,与独立运行程序比较,OCX控件在运行速度上仍有差距。不过我们的开发实践证明,采用高效的算法并精心优化代码可以使软件整体效率有较大改善。经过对比测试,我们研制的组件式GIS软件- ActiveMap,在图形显示上比目前Windows95/NT平台上大多数商业化GIS软件快,其中甚至包括非组件式的GIS软件。(2)紧凑、简练的数据结构 在能够充分表达地理信息并能有效进行各种处理、分析的前提下,软件数据结构要尽可能紧凑。这不仅可以加快数据存取速度,同时也为适应Internet传递的需要。(3)流行GIS数据文件的数据引擎 除提供与各种GIS数据文件格式的数据转换程序外,组件式GIS被设计为可以直接访问多种数据格式也是一大特色。Intergraph的GeoMedia可以直接访问MGE、Frame、ArcView、SDO等著名软件的数据格式。ActiveMap也可直接访问MGE等流行的数据格式,提高了数据共享方面的能力。

结语

组件式GIS是一种全新的GIS概念,在同MIS耦合、Internet应用、降低开发成本和使用复杂性等方面,具有明显优势。同时也打破了以往GIS基础软件由少数厂商垄断的局面,小的研究机构和厂商有机会以提供专业组件的方式打入GIS基础软件市场。我国GIS基础软件起步较晚,组件式GIS技术为我国GIS基础软件的开发提供了新的契机。

参考文献

[1] 钟耳顺,地理信息系统应用与社会背景分析 地理研究,1995年第二期;
[2] 蔡少华、王家耀、秦志远,面向对象技术与部件对象模型在GIS开发中的应用,《中国地理信息系统协会第三届年会论文集》,1997;
[3] 钟耳顺、宋关福、王尔琪、吴秋华,香港综合地理信息系统研制概要,图形图像学报,1997年第6期;
[4] Michelle Legault,Surfing the Net for GIS, GIS ASIAPACIFIC,Aug./Sept. 1997;
[5] 宋关福、钟耳顺、王尔琪,WebGIS--基于Internet的地理信息系统,图形图像学报,1998年第3期;
[6] Zhong Ershun, Song Guanfu, Wang Erqi, Development of a Components GIS based on Applications, Proceedings of IEAS '97 & IWGIS '97, Volume 1, August 18-22, 1997 Beijing China.

(原文发表于:《图形图像学报》1998年4月期)