引言
组件式软件技术已经成为当今软件技术的潮流之一,为了适应这种技术潮流,GIS软件象其他软件一样,已经或正在发生着革命性的变化,即由过去厂家提供了全部系统或者具有二次开发功能的软件,过渡到提供组件由用户自己再开发的方向上来。无疑,组件式GIS技术将给整个GIS技术体系和应用模式带来巨大影响。
GIS技术的发展,在软件模式上经历了功能模块、包式软件、核心式软件,从而发展到组件式GIS和WebGIS的过程。传统GIS虽然在功能上已经比较成熟,但是由于这些系统多是基于十多年前的软件技术开发的,属于独立封闭的系统。同时,GIS软件变得日益庞大,用户难以掌握,费用昂贵,阻碍了GIS的普及和应用。组件式GIS的出现为传统GIS面临的多种问题提供了全新的解决思路。
组件式GIS的基本思想是把GIS的各大功能模块划分为几个控件,每个控件完成不同的功能。各个GIS控件之间,以及GIS控件与其它非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。控件如同一堆各式各样的积木,他们分别实现不同的功能(包括GIS和非GIS功能),根据需要把实现各种功能的 “积木”搭建起来,就构成应用系统。
组件式GIS系统的特点
把GIS的功能适当抽象,以组件形式供开发者使用,将会带来许多传统GIS工具无法比拟的优点。
(1)、 小巧灵活、价格便宜
由于传统GIS结构的封闭性,往往使得软件本身变得越来越庞大,不同系统的交互性差,系统的开发难度大。在组件模型下,各组件都集中地实现与自己最紧密相关的系统功能,用户可以根据实际需要选择所需控件,最大限度地降低了用户的经济负担。。组件化的GIS平台集中提供空间数据管理能力,并且能以灵活的方式与数据库系统连接。在保证功能的前提下,系统表现得小巧灵活,而其价格仅是传统GIS开发工具的十分之一,甚至更少。这样,用户便能以较好的性能价格比获得或开发GIS应用系统。
(2)、 无须专门GIS开发语言,直接嵌入MIS开发工具
传统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等都可直接成为GIS或GMIS的优秀开发工具,它们各自的优点都能够得到充分发挥。这与传统GIS专门性开发环境相比,是一种质的飞跃。
(3)、 强大的GIS功能
新的GIS组件都是基于32位系统平台的,采用InProc直接调用形式,所以无论是管理大数据的能力还是处理速度方面均不比传统GIS软件逊色。小小的GIS组件完全能提供拼接、裁剪、叠合、缓冲区等空间处理能力和丰富的空间查询与分析能力。
(4)、 开发简捷
由于GIS组件可以直接嵌入MIS开发工具中,对于广大开发人员来讲,就可以自由选用他们熟悉的开发工具。而且,GIS组件提供的API形式非常接近MIS工具的模式,开发人员可以像管理数据库表一样熟练地管理地图等空间数据,无须对开发人员进行特殊的培训。在GIS或GMIS的开发过程中,开发人员的素质与熟练程度是十分重要的因素。这将使大量的MIS开发人员能够较快地过渡到GIS或GMIS的开发工作中,从而大大加速GIS的发展。
(5)、 更加大众化
组件式技术已经成为业界标准,用户可以象使用其他ActiveX控件一样使用GIS控件,使非专业的普通用户也能够开发和集成GIS应用系统,推动了GIS大众化进程。组件式GIS 的出现使GIS不仅是专家们的专业分析工具,同时也成为普通用户对地理相关数据进行管理的的可视化工具。
组件式GIS开发平台的结构
组件式GIS开发平台通常可设计为三级结构:
Ø 基础组件
面向空间数据管理,提供基本的交互过程,并能以灵活的方式与数据库系统连接;
Ø 高级通用组件
由基础组件构造而成,面向通用功能,简化用户开发过程,如显示工具组件、选择工具组件、编辑工具组件、属性浏览器组件等等。它们之间的协同控制消息都被封装起来。这级组件经过封装后,使二次开发更为简单。如一个编辑查询系统,若用基础平台开发,需要编写大量的代码,而利用高级通用组件,只需几句程序就够了。面向通用功能;
Ø 行业性组件
抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。以GPS监控为例。对于GPS应用,除了需要地图显示、信息查询等一般的GIS功能外,还需要特定的应用功能,如动态目标显示、目标锁定、轨迹显示等。这些GPS行业性应用功能组件被封装起来后,开发者的工作就可简化为设置显示目标的图例、轨迹显示的颜色、锁定的目标,以及调用、接受数据的方法等。
GIS组件的构成
GIS软件的模型包含若干功能单元,诸如空间数据获取、坐标转换、图形编辑、数据存储、数据查询、数据分析、制图表示等。可以想象要把这些所有的功能放在一个控件中几乎是不可能的,即使实现也会带来系统效率上的低下。一般可以认为GIS构件的设计主要遵循应用领域地需求。例如ESRI地MapObjects就是以空间数据访问、查询、制图为主要目标的GIS构件。
GIS组件产品
GIS组件的代表作应首推MapObjects以及MapX等。其中MapObjects由全球最大的GIS厂商ESRI(美国环境研究所)推出;MapX由著名的桌面GIS厂商美国MapInfo公司推出。另外还有加拿大阿波罗科技集团的TITAN等。下表是MapObjects和MapX的主要功能对比。
功能 | MapObjects | MapX |
显示的地图数据格式 | Arcview的SHP、ARC/INFO的coverage、SDE图层 | MapInfo的数据格式 |
叠加栅格图像 | 有 | 有 |
对地图的常用操作 | 放大、缩小、漫游等 | 放大、缩小、漫游等 |
图层控制 | 增加、移走、设置当前层 | 增加、移走、设置当前层 |
属性数据绑定 | 有 | 有 |
地图信息查询方式 | 1. 通过鼠标选取特征 | 1. 通过鼠标选取特征 |
专题地图 | 较弱 | 有 |
GPS集成 | 有 | 有 |
用户绘图图层 | 无 | 有 |
生成/编辑地图对象 | 较弱 | 较弱 |
地图标注 | 有 | 有 |
地图符号化 | 较弱 | 较强 |
分析功能 | 无 | 无 |
地理编码 | 有 | 有 |
可使用的开发语言 | VC、VB、PowerBuilder、Delphi、Access等 | VC、VB、PowerBuilder、Delphi、Lotus Notes等 |
表 4.1 MapObjects 和 MapX 的主要功能对比
应用及评价
软件的构件化已成为软件技术发展的潮流。基于 DCOM 的 ActiveX 构件实现,已成为软件工业的一种标准。伴随着未来其它非 Windows 平台对 ActiveX 的支持, ActiveX 构件化的 GIS 软件系统将对 GIS 的体系结构和 GIS 将来的应用前景产生深远影响。
虽然采用 GIS 构件在开发上有许多优势,但是不可避免的也存在一些功能上的欠缺和技术上的不成熟,主要包括以下几个方面:
Ø 与专业的 GIS 客户端软件相比,采用构件技术不可避免的带来效率上的相对低下,这在访问超大空间数据(如大数据量的遥感图象)的时候表现得尤为明显;
Ø 支持的空间数据量有限;
Ø 支持的功能有限,由于是构件,只覆盖了 GIS 系统的部分功能,于是对于特殊领域,它就显得无能为力;
Ø 系统的可靠性、容错性有待提高。 DCOM 的一大特点是:开发及使用过程中必须时刻注意 Windows 系统 OLE 系统注册表的正确。