• Cehui8.com 测绘地理信息领域专业门户
  • 首页 > 测绘论文 > GIS

    GIS组件化与组件式GIS研究

    2013-07-09 18:57:13 来源: 测绘论坛 作者:
    聊聊

    摘要 组件式地理信息系统(ComGIS)是适应软件组件化潮流的新一代地理信息系统。本文阐述了GIS软件技术体系发展的几个阶段,指出GIS软件的组件化趋势;同时分析了传统GIS的不足以及组件式GIS的特点。 
    关键词 地理信息系统、组件式地理信息系统、GIS、ComGIS 

    1. GIS的组件化趋势 
    地理信息系统(GIS)技术正处于一个重要的发展时期,新概念和新产品层出不穷。在GIS蓬勃发展的今天,GIS的组件化趋势日益明显,已经成为GIS的重要发展方向之一。从发展历程看,GIS可以划分为图1所示的几个发展阶段[1],了解这一历程可以更好地认识GIS组件化的趋势。 
    在GIS发展的早期阶段,由于受到技术的限制,GIS软件往往是只能满足于某些功能要求一些模块,没有形成完整的系统[2],而各个模块之间不具备协同工作的能力。 
    随着理论和技术的发展,各种GIS模块走向集成,逐步形成大型GIS软件包(GIS Package),我们暂称之为集成式GIS(IntegratedGIS),如ESRI的Arc/Info、Genasys的GenaMap等均为集成式GIS的代表。集成式GIS是GIS发展的一个重要里程碑,其优点在于其集成了GIS各项功能,形成独立完整的系统;缺点在于系统复杂、庞大,从而导致成本高、难于与其它应用或系统集成等问题。 
    另一类GIS为随后出现的模块化GIS(Modular GIS),代表软件有Intergraph的MGE等。模块化GIS的基本思想是把GIS按照功能划分为一系列模块,运行于统一的基础环境之上(如MicroStation)。尽管许多集成式GIS软件也可以划分为几个模块,但模块化GIS软件的模块被有目的地划分得更细。模块化GIS具有较大的工程针对性,便于开发和应用,用户可以根据需求选择所需模块。但无论是集成式GIS或是模块化GIS,都很难与管理信息系统(MIS)以及专业应用模型集成高效、无缝的GIS应用。 
    为解决集成式GIS与模块化GIS的缺点,提出了核心式GIS(Core GIS)的概念。核心式GIS被设计为操作系统的基本扩展[3]。Windows系列操作系统上的核心式GIS提供了一系列动态连接库(DLL),开发GIS应用系统时可以采用现有的高级编程语言,通过应用程序接口(API)访问内核所提供的GIS功能。除了一些基本的动态连接库以外,实现各种功能的动态连接库可以被拆卸和重组,它提供了动态连接库一级的更底层的组件化方式,给用户提供更大的灵活性。对数据库管理要求较多的用户甚至可以选择MIS开发工具来构造GIS应用,为GIS与MIS的无缝集成提供了全新的解决思路。但是,由于核心式GIS提供的组件过于底层,给应用开发者带来一定难度,也不适应可视化程序设计的潮流。 
    随着计算机软件技术的发展,GIS组件化发展到了一个全新的阶段,出现了组件式GIS(Components GIS,缩写为ComGIS)。组件式GIS基于标准的组件式平台,各个组件之间不仅可以进行自由、灵活的重组,而且具有可视化的界面和使用方便的标准接口。组件式平台主要有Microsoft的COM(Component Object Model,组件对象模型)/DCOM(Distributed Component Object Model,分布式组件对象模型)和OMG的CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构),目前Microsoft的COM/DCOM占市场领导地位。基于COM/DCOM,Microsoft推出了ActiveX技术,ActiveX控件是当今可视化程序设计中应用最为广泛的标准组件。新一代的组件式GIS也大都是ActiveX控件或者其前身OLE控件。组件式GIS代表着当今GIS发展的潮流。本文的讨论以基于COM/ActiveX规范的组件式GIS为例。 
    国际上大多数GIS软件公司把开发组件式软件作为重要的发展战略。Intergraph公司声称已经进入组件式GIS的时代,它推出的GeoMedia组件式GIS软件是其庞大的Jupiter计划中的一部分。ESRI和MapInfo也分别推出了MapObjects和MapX。我们也正在研制国产的组件式GIS软件—ActiveMap (其升级版本现更名为SuperMap),已经在“香港综合地理信息系统”、“南宁市土地信息系统”、“香港之窗”等系统中成功应用并得到实践检验。 
    几乎在开发组件式GIS的同时,出现了万维网GIS(WebGIS)。万维网GIS是Internet技术与GIS相结合的产物。GIS通过WWW功能得以扩展,真正成为一种大众使用的工具。从WWW的任意一个节点,Internet用户可以浏览万维网GIS站点中的空间数据、制作专题图,以及进行各种空间检索和空间分析,从而使GIS进入千家万户[4]。已有一些公司推出了万维网GIS产品,比如:MapInfo公司的MapInfo ProServer 和MapXtreme、Intergraph公司的GeoMedia Web Map、ESRI的Internet Map Server(IMS) for ArcView & MapObjects、Autodesk的MapGuide以及Bently的ModelServer/Discovery等等。目前万维网GIS还处于不成熟的初级阶段,已经推出的万维网GIS产品大多是利用现有GIS软件通过CGI或者Server API 构造的过渡型产品[4]。随着组件式GIS的发展和分布式对象Web(Distributed Object Web)技术的逐渐成熟,未来的万维网GIS将是基于COM/ActiveX或COBRA/Java开发的分布式对象万维网GIS。从基础软件的角度来看,组件式GIS和万维网GIS之间的界限将会变得模糊不清,而只是应用方式上的区别。 
    从GIS模块发到集成式GIS是从分散到集中的过程,这是GIS发展历程中的一个重大进步。从集成式GIS发展到模块化GIS,这是GIS组件化的开始,随后发展到核心式GIS,GIS组件化趋势越来越明显,并形成组件化的标准形式—组件式GIS和WebGIS。 
    2. 组件式GIS的特点 
    组件式GIS符合当今软件技术的发展潮流,极大地方便了应用和系统集成。同传统的GIS比较,这一技术具有以下几方面特点①: 
    2.1. 高效无缝的系统集成 
    GIS应用系统建设实际上是对GIS数据、基本空间处理功能与各种应用模型进行集成。各种资源和设施管理的GIS应用更是要求GIS和MIS乃至办公自动化(OA)有机结合,这对GIS系统集成方案提出了很高的要求。归纳起来,基于传统的GIS基础软件主要有四种模式的集成方案(图2)。 
    模式一: 在GIS基础软件与应用分析模型之间,通过文件存取方式建立数据交换通道。在这种集成方式中,GIS与应用分析模型通过中间文件格式交换数据(图2-[url=]),不适合于大量而频繁地交换数据的情况,而且GIS基础软件与应用分析模型相互独立,系统整合性差。[/url]
    模式二: 直接使用GIS软件提供的二次开发语言编制应用分析模型(图2-)。解决了模式一的缺陷,但是GIS所提供的二次开发语言往往不能与C、C++、FORTRAN等专业程序设计语言相比,难以开发复杂的应用模型。 
    模式三: 利用专业程序设计语言开发应用模型,并直接访问GIS软件的内部数据结构(图2-)。应用模型开发者可以根据自己的意愿选择使用何种高级语言开发复杂的应用模型,但是直接访问GIS软件数据结构增加了应用开发的难度。 
    模式四: 通过动态数据交换(DDE)建立GIS与应用模型之间的快速通信(图2-)。这是在DDE技术发展起来以后,对第一种集成方式的改进,可以避免频繁的文件数据交换所带来的效率降低的缺陷,也避免了从GIS外部直接访问GIS数据结构的代价。但是,GIS与应用模型是分离的,这种拼接仍然是“有缝”的。 
    不论采用以上何种系统集成模式,传统的GIS软件在系统集成上都存在缺陷。组件式GIS提供了解决以上问题的理想方案。组件式GIS不依赖于某一种开发语言,可以嵌入通用的开发环境(如:Visual Basic或Delphi)中实现GIS功能,专业模型则可以使用这些通用开发环境来实现,也可以插入其它的专业性模型分析控件。因此,使用组件式GIS可以实现高效、无缝的系统集成(图3)。 
    2.2. 无须专门GIS开发语言 
    传统GIS往往提供独立的二次开发语言,如Arc/Info的AML、MGE的MDL、MapInfo的MapBasic等。对GIS基础软件开发者而言,设计一套二次开发语言是不小的负担,同时二次开发语言对用户和应用开发者而言也存在学习上的负担。而且使用系统所提供的二次开发语言,开发能力往往受到限制,难以处理复杂问题。组件式GIS则不需要专门的GIS二次开发语言,只需实现GIS的基本功能函数,按照组件标准开发接口。这有利于减轻GIS软件开发者的负担,而且增强了GIS软件的可扩展性。GIS应用开发者,不必掌握专门的GIS开发语言,只需熟悉基于Windows平台的通用集成开发环境,以及组件式GIS各个控件的属性、方法和事件,就可以完成应用系统的开发和集成。目前,可供选择的开发环境很多,如Visual C++、Visual Basic、Visual FoxPro、Delphi、C++ Builder以及Power Builder等等。 
    2.3.大众化的GIS 
    组件式技术已经成为业界标准,用户可以象使用其他ActiveX控件一样使用组件式GIS控件,使非专业的普通用户也能够开发和集成GIS应用系统,推动了GIS大众化进程。组件式GIS 的出现使GIS不仅是专家们的专业分析工具,同时也成为普通用户对地理相关数据进行管理的的可视化工具。 
    许多部门、组织和个人建设GIS项目的初衷并非是与人共享他们的数据,而是使用GIS来管理和维护他们拥有的财产、资源和设施。因此传统的GIS软件主要是面向地理数据的拥有者,系统非常昂贵、庞大而且复杂。随着社会信息化的进一步加深,数据共享显得越来越重要。让用户共享并且浏览数据,不但能保护数据投资,而且会能产生增值效应。事实上,数据的使用者(users)远远比数据的拥有者或制作者(doers)多,而数据的浏览者(viewers)则比使用者更多。数据的拥有者、使用者和浏览者呈金字塔形(图4)。新型的组件式GIS是面向位于金字塔下部的数据使用者和浏览者的。使用组件式GIS,可以方便地进行地理数据的分析、浏览和发布。 
    2.4.成本低 
    由于传统GIS结构的封闭性,往往使得软件本身变得越来越庞大,不同系统的交互性差,系统的开发难度大。组件式GIS提供空间数据的采集、存储、管理、分析和模拟等功能,至于其他非GIS功能(如关系数据库管理、统计图表制作等)则可以使用专业厂商提供的专门组件,有利于降低GIS软件开发成本。另一方面,组件式GIS本身又可以划分为多个控件,分别完成不同功能。用户可以根据实际需要选择所需控件,最大限度地降低了用户的经济负担。 
    3. 组件式GIS的应用 
    各个GIS控件之间,以及GIS控件与其它非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。控件如同一堆各式各样的积木,他们分别实现不同的功能(包括GIS和非GIS功能),根据需要把实现各种功能的 “积木”搭建起来,就构成应用系统。 
    传统GIS软件与用户或者二次开发者之间的交互,一般通过菜单或工具条按钮、命令以及GIS二次开发语言进行。组件式GIS与用户和客户程序之间则主要通过属性、方法和事件进行交互[6] (图5)。 
    属性(Properties) 指描述控件或对象性质(Attributes)的数据,如:BackColor (地图背景颜色)、GPSIcon (用于GPS动态目标跟踪显示的图标)等。可以通过重新指定这些属性的值来改变控件和对象性质。在控件内部,属性通常对应于变量(Variables)。 
    方法(Methods) 指对象的动作(Actions),如:Show(显示)、AddLayer(增加图层)、Open(打开)、Close(关闭)等。通过调用这些方法可以让控件执行诸如打开地图文件、显示地图之类的动作。在控件内部。方法通常对应于函数(Functions)。 
    ActiveMap 
    控件属性页 
    Visual Basic 
    主窗口 
    VB 
    工具条 
    ActiveMap 
    控件 

    事件(Events) 指对象的响应(Responses)。当对象进行某些动作时(可以是执行动作之前、动作进行过程中或者动作完成后)激发一个事件,以便客户程序介入并响应这个事件。比如用鼠标在地图窗口内单击并选择一个地图要素,控件产生选中事件(如ItemPicked)通知客户程序有地图要素被选中,并传回描述选中对象的个数、所属图层等等有关选择集信息的参数。 
    可视化开发环境 
    特点及适用范围 
    Visual Basic 
    具有较强的多媒体和数据库管理功能,且易于使用,适合大多数GIS应用。 
    Delphi 
    C++ Builder 
    Visual C++ 
    功能强大但对编程人员要求很高,适用于编程能力强的用户以及需要编写复杂的、底层的专业分析模型的GIS应用。 
    Borland C++ 
    Visual FoxPro 
    数据库管理功能强,适用于建立有大量关系数据的GIS应用。 
    Power Builder

    属性、方法和事件是控件的通用标准接口,适用于任何可以作为ActiveX包容器的开发语言,具有很强的通用性。目前,可以嵌入组件式GIS控件集成GIS应用的可视化开发环境很多,根据GIS应用项目的特点和用户对不同编程语言的熟悉程度,可以比较自由地选择合适的开发环境(表1)。其中,Microsoft公司的Visual Basic(图6)和Borland公司的Delphi功能强大、易于使用,适合大多数GIS应用;而Visual FoxPro等开发环境适合建立数据库管理功能强大的GIS应用。例如,笔者等在研制1997年中国科学院赠送给中国人民解放军驻香港部队的“香港综合地理信息系统”中,使用了Visual Basic 与我们开发的ActiveMap组件式GIS软件进行系统集成[7]。“南宁市土地信息系统”则强调GIS与日常业务办公的紧密结合,对数据库和办公自动化的要求较高,所以在服务器端采用Microsoft SQL Server管理日常办公业务数据和宗地属性数据,采用Intergraph的MGE管理宗地图等空间数据;在客户端则采用Visual FoxPro + ActiveMap的集成方案。“香港之窗”多媒体光盘对多媒体功能要求较高,故选择Visual Basic 与ActiveMap集成。 

    4. 结语 

    纵观GIS软件的发展历程,组件化是一个非常重要的趋势,研究和跟踪这一技术,对于发展我国GIS产业具有重要意义。组件式GIS在与MIS耦合、Internet应用、降低开发成本和使用复杂性等方面,具有明显优势。同时也打破了以往GIS基础软件由少数厂商垄断的局面,小型研究机构和厂商有机会以提供专业组件的方式打入GIS基础软件市场。我国GIS基础软件起步较晚,组件式GIS技术为我国GIS基础软件的开发提供了新的契机。

      声明①:文章部分内容来源互联网,如有侵权请联系删除,邮箱 cehui8@qq.com

      声明②:中测网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。

      加群提示:我们创建了全国32个省份的地方测绘群,旨在打造本地测绘同行交流圈,有需要请联系管理员测小量(微信 cexiaoliang)进群,一人最多只能进入一个省份群,中介人员勿扰

    返回顶部