软件组件技术及其在GIS中的应用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件组件技术及其在GIS中的应用摘要:为了适应软件组件化潮流,新一代地理信息系统——组件式地理信息系统越来越成为今后GIS发展的趋势。在阐述组件式地理信息系统的概念和发展的基础上,介绍了组件式地理信息系统所依赖的技术基础——组件技术,最后提出在实际开发组件式地理信息系统平台时的设计思路。关键词:地理信息系统COM/DCOMCOMGISTheApplicationOfComponentsTechnologyInGISAbstract:InordertobeseasonedwiththeCOMtideofsoftware,COMGISbecomesthedirectionofdevelopmentofGISmoreandmore.BasedonexpatiatingtheconceptionanddevelopmentofCOMGIS,IntroducethetechnicbasisofCOMGIS——COM/DCOM,finallyputforwardthedesignthoughtofempolderingCOMGISplatforminpractice.Keywords:GISCOM/DCOMCOMGIS1引言空间信息是十分重要的,地球上的万物无不与空间位置发生关系,如何利用计算机处理空间相关信息是地理信息系统产生和发展的原动力。现在GIS技术在国防、城市规划、国土资源管理、交通运输、环境监测和保护等与国民经济乃至国家命脉相关的重要领域的成功应用,极大地推动了社会生产力的发展,使之成为世界各国激烈竞争的高科技热点之一。同时,社会的发展,特别是信息全球化的今天,对空间地理信息管理提出了更高的要求。传统的GIS技术正面临着严峻的挑战。组件化技术是针对长期以来软件发展落后于硬件发展的问题而提出的解决方案,它从根本上改变了传统的软件开发思想,,构筑了一个由多方自主提供软件组件、组件间相互协调工作的体系,实现了软件的复用和健壮更新,是软件业沿社会化方向发展的大趋势。将软件组件化开发思想应用于GIS软件开发中,是在技术上摆脱重复开发的有效途径,因此能加快GIS技术的进步,将为GIS的发展带来巨大的生机。软件组件对象模型是关于软件组件之间如何连接的标准。目前占主导地位的主要有微软的COM(即ComponentObjectModel)和对象管理集团OGM的CORBA(即CommonObjectRequestBrokerArchitecture)。其中COM具有明确的组件开发和调用的规范,在PC平台上已形成广泛的应用基础。2组件式GIS概述地理信息系统(GIS)经过近40年的发展,在空间数据的获取能力、储存与管理能力、处理与分析能力以及显示与输出能力等方面都取得了长足的进步。随着GIS在各个领域应用的深入开展,GIS的组件化趋势日益明显,已经成为GIS的重要发展方向之一。从GIS软件模块开发和集成的技术发展历程,GIS可以划分为以下几个发展阶段。图1GIS软件的发展历程从GIS模块发到集成式GIS是从分散到集中的过程,这是GIS发展历程中的一个重大进步。从集成式GIS发展到模块化GIS,这是GIS组件化的开始,随后发展到核心式GIS,GIS组件化趋势越来越明显,并形成组件化的标准形式——组件式GIS和WebGIS。从发展过程来看,GIS经历了如图1所示的几个发展阶段,了解这一历程可以更好地认识到GIS组件化的趋势。GIS应用的广度和深度主要依赖于GIS平台技术,传统的GIS平台虽然在功能上较为成熟和完善,但是其平台的开发技术已经落台,随着GIS应用的不断扩展和深入,用户对GIS技术提出了更高、更新的要求,要求GIS从封闭走向开放,提供广域空间信息共享和实现空间数据、空间分析的无缝集成。于是,传统GIS平台的缺陷逐渐暴露了出来,具体表现在:①系统复杂而庞大,使得普通的开发技术人员难以掌握,导致开发周期过长,阻碍着自身的推广和发展。②单纯的二次开发语言限制了GIS与多媒体技术及其它专业模块、专业系统的高效无缝集成,从而导致了应用局限。③难以GIS模块集成式GIS模块化GIS核心式GIS组件式GISWebGIS互操作GIS应付海量数据的管理和分析,受到操作系统平台的限制,无法应用分布式环境,无法跨平台运行,更无法基于WEB发布数据。这些缺陷仅靠其平台自身难以得到妥善合理地解决,唯一的出路就是融合新的计算机技术,通过新技术的应用来推动GIS理论体系和应用体系的发展和完善。随着计算机技术和软件技术的飞速发展,特别是Internet的出现和组件式软件技术的应用,GIS也自然而然迎合这些起着革命性的发展和变化的趋势,无论是GIS平台的设计思想,还是GIS应用系统的开发方式。近几年来,组件式GIS发展为GIS的前沿技术,并逐渐成为主流趋势。目前,已经商业化的COMGIS平台有GeoMediaMapObjectsArcObjects等。组件式GIS(ComponentsGIS,缩写为COMGIS)是指基于组件对象平台,以一组具有某种标准通信接口的、允许跨语言应用的组件提供的GIS。这种组件称为GIS组件。GIS组件之间以及GIS组件与其他组件之间可以通过标准的通信接口实现交互,这种交互甚至可以跨计算机实现。COMGIS是面向对象技术和组件式软件在GIS软件开发中的应用。COMGIS为新一代GIS应用提供了全新的开发工具。同传统GIS比较,COMGIS具有多方面的特点,包括:无缝集成、跨语言使用、易于推广、成本低、无限扩展性、可视化界面设计以及Internet应用等。3COM/DCOM技术组件式对象模型(ComponentObjectModel简称COM)是OLEObjectLinkingandEmbedding)和ActiveX共同的基础。是一种以组件为发布单元的对象模型,它不是编程语言,而是构造二进制兼容软件组件的规范,COM定义的规范是建立在二进制代码级的基础之上,所以不依赖于任何特定的语言环境。COM所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之后,模块之间就可以通过被称之为“接口”的机制来进行通信。组件间的接口通过一种与平台无关的语言IDL来定义,而且是二进制兼容的,使用者可以直接调用执行模块来获得对象提供的服务和功能。而DCOM(DistributedCOM)则是COM在Internet/Intranet上的扩展,用以支持不同计算机上的组件对象与客户程序之间或组件对象之间的相互通信。DCOM通过RPC(RemoteProcedureCall)远程过程调用,提供分布功能,使组件可以在使用DCOM组件的计算机之外的机器上运行,而无须将组件下载到本地计算机,并可以将DCOM组件放置到多个服务器上运行,而客户无须编制任何远程调用代码,从而实现了协议无关性和平台独立性。以下依次阐述COM的相关概念:3.1接口COM组件中最重要的概念是接口,接口是借助C++纯抽象基类实现的,而C++纯抽象基类确保了COM必须符合的二进制标准。组件之间的接口是组件软件的关键,同一软件中的组件必须使用同样的接口标准才能保证组件之间可以进行通信。COM不仅仅提供了组件之间的接口标准,还引入了面向对象的思想。组件模块为COM对象提供了活动的空间,COM对象以接口的方式提供服务,这种接口被称为COM接口(如图2所示)图2COM组件、COM对象和COM接口关系3.2COM组件实现对于客户而言,一个组件就是一个接口集。可通过C++类继承一个或多个纯抽象基类(接口)而实现。3.3IUnKnown接口所有的COM接口都必须继承一个名为IUnKnown的接口。因为IUnKnown接口中包含有三个函数,因此,这意味着接口的虚拟函数表中前三个元素都相同,其中保存的是IunKnown中三个成员函数实现的地址(如图3所示)。图3接口IX的内存结构3.4组件发布COM要求对用户和组件进行严格划分。部件以服务器的形式存在,一般有三种形式:进程中服务器、本地服务器、远程服务器。当客户希望创建在同一进程中运行的组件时,则采用进程中服务器形式,在DLL中实现。当客户希望创建在同一机器的另外一个进程中运行的组件时,则采用本地服务器,在EXE中实现。当客户希望创建一个在远程机器上运行的组件时,则采用远程服务器,可在DLL或EXE中实现,但需要DCOM支持。3.5组件创建客户在使用组件时,首先必须创建组件。创建组件的方法有两种。第一种方法是通过位于COM函数库OLE32.DLL中的库函数CoCreateInstance使组件实例化:第二种方法是通过类厂ClassFactory生成组件。第二种方法比第一种方法复杂,但灵活性更强。4COMGIS开发平台的设计4.1传统GIS软件的分析建设一个GIS应用系统,实际上是对空间数据、GIS软件和各种应用模型进行集成。资源和设施管理的GIS应用更是要求GIS与管理信息系统(ManagementInformationSystemsMIS)乃至与办公自动化(OfficeAutomationOA)之间的有机结合,这对GIS系统集成方案提出了很高的要求。但是传统GIS软件封闭的、独成体系的结构使得GIS很难与应用模型、MIS或OA实现高效的、有机的集成。归纳起来,传统的GIS基础软件的集成方案主要有以下四种模式:1)通过存取中间文件的方式建立GIS软件与应用分析模型之间的数据交换通道;2)直接使用GIS软件提供的二次开发语言编制GIS应用分析模型;3)利用专业程序设计语言开发GIS应用模型,并直接访问GIS软件的内部数据结构;4)通过动态数据交换(DDE)建立GIS与应用模型之间的快速通信。4.2组件设计的基本原则设计COMGIS可根据功能和应用划分为多个组件和控件,划分时需要根据不同的数据结构和系统模型进行具体分析,主要考虑以下几个方面的问题:①按照功能的相关性分类,相关性大、结合紧密的归为同一组件。②把各个数据管理模块与系统分析、应用模块分开,各负其责,增强模块之间的重用性。③处理相同数据文件的模块尽可能设计在同一组件里。④对多个组件对象的整体操作尽量利用组件集合的概念进行处理。⑤注意可视化控件和组件的划分,不同的功能和应用应该集成在不同的层面。⑥采用高效的算法并精心优化代码使软件整体效率比较高。⑦在能够充分表达地理信息并能有效地进行各种处理分析的前提下,软件数据结构模型要尽可能简明和紧凑。4.3COMGIS开发平台的结构设计组件式GIS开发平台通常可设计为三级结构:基础组件:处于平台最底层,是整个系统的基础,主要面向空间数据管理,提供基本的交互过程,以灵活的方式与数据系统连接。高级通用组件:由基础组件构造而成。它们面向通用功能,简化用户开发过程,如显示工具组件、选择工具组件、编辑工具组件、属性浏览器组件等等。它们之间的协同控制消息都被封装起来。这些组件经过封装后,使二次开发更为简单。行业性组件:抽象出行业应用的特定算法固化到组件中进一步加速开发过程。4.4COMGIS开发的基本思路使用COM/DCOM技术开发COMGIS系统的基本思路是:多种组件的集成,让GIS组件做GIS的工作,其他功能让其他的组件去完成,GIS组件与其他组件之间的联系由可视化的通用开发语言(如VisualC++或Delphi)来建立。这些开发语言建立了应用系统的框架,COMGIS组件和其他组件提供了实现具体功能的“砖头”,这些“砖头”在框架的组织下构成运行的GIS系统。COMGIS提供了实现GIS功能的组件,专业模型则可以使用这些通用开发环境来实现,也可以插入其他的专业性模型分析控件。因此使用COMGIS可以实现高效无缝的系统集成。形象的说,COMGIS组件开发的基本思想就是“搭积木”的方法,把GIS的各大功能模块划分为若干个组件或控件,每个组件或控件完成不同的功能,它们之间通过接口的属性、方法和事件等相互通信和作用。而通过可视化的软件开发工具就可以把各个GIS控件及其他非GIS控件方便地集成起来,形成最终的GIS应用。5组件技术在GIS中的应用5.1我国GIS软件发展的制

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功