您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页GIS应用软件开发模式分析

GIS应用软件开发模式分析

来源:爱问旅游网
 2007年第9期

文章编号:100622475(2007)0920051203

计算机与现代化

JISUANJIYUXIANDAIHUA

总第145期

GIS应用软件开发模式分析

肖 潇

(湖南农业大学信息科学技术学院,湖南长沙410128)

摘要:对当前GIS应用软件开发模式进行分析,针对单纯二次开发、高级语言开发与集成二次开发分别展开论述,对比分析其不同的开发特点。

关键词:软件开发;GIS;组件;OLE自动化中图分类号:TP311    文献标识码:A

AnalysisofGISApplicationDevelopmentModes

XIAOXiao

(CollegeofInformationEngineering,HNAU,Changsha410128,China)

Abstract:ThispaperanalyzesthepopularGISapplicationdevelopment,discussesseveralmethodsbasedonsimplicitysecondarydevelopment,independencedevelopmentusingprogramminglanguage,integratedsecondarydevelopment,andmakesacompari2sononsuchdifferentdevelopmentcharacteristics.

Keywords:applicationdevelopment;GIS;components;OLEautomation

0 引 言

地理信息系统(GeographicInformationSystem,简

称GIS)是计算机科学、地理学、测量学、地图学等多门学科综合的一种边缘性学科,同时也是管理和研究与地理空间数据有关的计算机新兴技术。GIS由计算机硬件、软件、数据和用户有机结合而成,它的主要功能是实现地理空间数据的采集、编辑、管理、分析、统计、制图以及决策功能,其核心是对空间数据的空间分析,其GIS软件最重要的组成部分是空间对象的属性数据和空间数据存储的数据库。随着信息技术尤其是计算机技术的快速发展,以及GIS应用范围的扩大和程度的加深,GIS技术处于急剧的变化和发展中,其中,地理信息系统应用软件的开发更是日新月异,本文就GIS应用软件开发模式进行讨论。

1 GIS应用软件开发的主要模式

1.1借助GIS软件单纯二次开发

完全借助于GIS工具软件提供的开发语言如Arc/Info、MapInfo和Intergraph等大型GIS系统提供

的二次开发工具,结合自己的目标进行应用系统开

发。GIS工具软件大多提供了可供用户进行二次开发的宏语言,如MapInfo公司研制的MapInfoProfes2sional提供了MapBasic语言,ESRI的ArcView提供了Avenue语言等等。用户可以利用这些宏语言,以原GIS工具软件为开发平台,开发出自己的针对不同应用对象的应用程序。

1.2利用高级语言开发

目前国内国际流行很多大型的GIS软件,如Arc2GIS、MapInfo、MapGIS等,其提供了全面的GIS功能,可以在任何一种需要GIS的部门使用,但价格不菲,了很多部门和企业对专用GIS软件的购买,因此利用高级语言针对用户的需求开发GIS应用软件尤为重要。自主设计空间数据的数据结构和数据库,然后利用VisualC++、VisualBasic、Delphi、PowerBuilder等可视化高级编程语言开发地理信息系统软件。

最基本的GIS系统需要包含:管理空间坐标数据的矢量图形系统、管理特征数据的数据库管理系统以及实现矢量图形系统与数据库系统双向连接的连接系统这几个主要部分。下面就这几个部分利用高级语言的开发,进行详细的介绍。

收稿日期:2006208221

作者简介:肖潇(19802),女,湖南长沙人,湖南农业大学助教,硕士研究生,研究方向:数据库,计算机软件与应用。

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

 52

1.建立比较完善的矢量图形系统。

计 算 机 与 现 代 化2007年第9期

矢量图形系统是GIS最重要的组成部分,不同领域的GIS系统所需要的矢量图形元素不同,对其的操作要求也不同,但一般都需要如下功能:(1)比较完善的矢量图形元素。包括点、直线、圆、连接直线、多边形区域、标注文本等基本图形元素,也包括图形块。具有了基本图形元素和图形块后的矢量图形系统,在很大程度上能够满足普通管理型GIS的矢量图形要求。(2)能够比较完善地处理矢量图形元素。包括对图形进行放缩、移动等操作,具有图层、颜色、线形的设置等功能。(3)能够比较完善地进行图形输入和输出。包括鼠标交互绘制功能,图形数据交互输入等功能。根据具体的情况需要具有数字化仪输入、与其他图形系统的数据接口等功能,还有从打印或绘图设备输出图形的能力。(4)有较大的图形元素存储容量,达到一般实用要求。(5)有较快的图形处理速度,达到一般实用要求。(6)有较强的容错能力。(7)有较强的恢复性。

2.建立配套的数据库管理系统。

数据管理系统是GIS系统重要的组成部分,用于管理GIS系统中的各种数据。微软提供了多种数据库访问技术,最常用的有ODBC、DAO以及OLEDB和ADO。ODBC是为客户应用程序访问关系数据库时提供的一个标准接口,对不同的数据库,ODBC提供了一套统一的API,使得应用程序可以应用所提供的API,访问任何提供了ODBC驱动程序的数据库,这样可以使得各种数据库系统(如FoxPro,Access,SQLServer,Oracle)的数据库文件作为数据源。DAO提供了一种通过程序代码创建和操纵数据库的机制,多个DAO构成一个体系结构,在这个结构中,各个DAO对象协同工作,微软提供的数据库引擎通过DAO的封装,向程序员提供了丰富的操作数据库的手段。ADO是微软提供对各种数据格式的高层接口,该接口已经成为访问数据库的新的标准,使用该接口的数据库称为OLEDB数据库,OLEDB数据库可以使用户方便地访问各种类型的数据库,包括关系型或非关系型数据库等。

3.建立矢量图形元素与数据库管理系统的连接关系。由矢量图形元素组成的图形元素系统与数据库管理系统并非相互,所谓建立连接关系,就是把矢量图形系统的图形元素与数据库管理系统的数据库记录或者数据库视图之间建立连接,把性质数据赋给矢量图形元素。对于一个比较完善的GIS系统来说,这种连接必须具有以下的特点:连接的双向性、连接的多项性、连接的稳定性。

另外,可以通过对矢量图形系统的图形元素的操作(选中、图形元素间的拓扑关系等)来得到或操作与之连接的性质数据,实现空间信息统计和分析等功能,即以建立起来的GIS系统框架为基础,开发实现使用系统的具体功能。随着网络的普及与发展,进一步开发实现服务器/客户机模式的GIS系统。

展起来的一种程序设计标准,它允许一个程序模块控制其它程序模块的执行。换句话说,支持自动化的程序模块的行为是可以通过编程来控制的,这种控制通过应用程序对自动化支持程序所提供的对象的访问来完成。

通常OLE技术,在应用程序窗口中放入可插入控件,双击它激活控件服务器,在服务器窗口进行对象编辑。它需要用户除了应用程序之外,还要对其它的服务器的功能操作有一定了解,增加用户负担。如果通过OLE自动化技术,对OLE对象变量编程,引用存储在OLEobject变量中的对象进行自动化控制,OLE服务器对前台应用程序的要求在后台响应自动完成,用户就可以不用直接介入服务器的操作。GIS开发工具平台本身的复杂性对用户有一定要求,易使非专业用户望而却步,将其通过OLE自动化技术转换成可被用户接收的、易操作的应用系统也是集成开发的初衷。

一些商业GIS软件如MapInfo公司的MapInfoProfessional和GoldenSoft公司开发的Surfer,都提供OLEAutomation,用户可以将该软件作为一个对象嵌入自己的系统。MapInfo向容器程序暴露其可编程对象,这与通常在Office系列软件中嵌入OLE对象是同一原理。容器程序可以采用VC、VB、Delphi、PowerBuilder等高级语言,编程手段灵活。

以MapInfo和VisualBasic为例,用VB开发工具开发前台可执行应用程序,以OLE自动化方式启动GIS工具软件在后台执行,利用回调技术动态获取其返回信息,实现应用程序中的地理信息处理功能。操作过程为:

(1)首先新建一个VB.EXE工程;

(2)在通用变量声明中定义MapInfo对象:PublicMapInfoAsObject

存储MapInfo回调信息:PublictheResponderAsObject(3)在Form1加载事件中写入如下语句,建立和MapInfo的连接:

InitializeMapInfoConnection

1.3采用DDE/OLEAutomation技术的开发方法

DDE(DynamicDataExchange,动态数据交换)是一个发送消息和接收消息的机制,使得应用程序之间

构造一个MapInfo应用程序句柄:

SetMapInfo=CreatObject(\"MapInfo.Application\")定义应用程序窗口显示MapInfo的图形与信息

MapInfo.do\"SetNextDocumentParent\"&main1.hWnd&\"Style1\"

1.4组件式GIS软件开发

能够实现共享数据、在远端执行命令以及检查错误状态等功能。OLEAutomation就是对象连接与嵌入的自动化功能,提供了对象之间的互操作功能,是指通过编程来使一个OLE服务器应用程序自动修改它的OLE对象。OLE自动化技术是在微软公司的对象链接和嵌入技术和组件对象模型技术(COM)基础上发

组件开发是指利用第3方提供的组件(如Ma2pObject等),以通用软件开发工具尤其是可视化开发工具,如Delphi、VisualC++、VisualBasic、PowerBuilder等为开发平台,进行系统的开发。

1.组件技术及组件式GIS。

组件技术是一种近年来日益普及的最新软件开发技术。所谓组件,其实就是一种可部署软件的代码包,其中包括某些

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

 2007年第9期肖潇:GIS应用软件开发模式分析 53

可执行模块。组件单独开发并作为软件单元使用,它具有明

确的接口,软件就是通过这些接口调用组件所能提供的服务,多种组件可以联合起来构成更大型的组件乃至直接建立整个系统。组件必须是自包含的,组件设计中必须包括需求、源代码和可执行代码、接口规范、分析及设计模型、测试和其他同类术语。组件的实现必须支持一种或者多种其用户所希望获得的接口。

组件式GIS(ComponentsGIS,简称ComGIS)等新兴技术随着组件技术的发展应运而生。组件式软件是新一代GIS的重要基础,组件式GIS是面向对象技术和组件式软件在GIS软件开发中的应用。组件式GIS的基本思想是把GIS的各大功能模块划分为几个控件,每个控件完成不同的功能。各个GIS控件之间,以及GIS控件与其它非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。控件如同一堆各式各样的积木,他们分别实现不同的功能(包括GIS和非GIS功能),根据需要把实现各种功能的“积木”搭建起来,就构成应用系统。

2.常用的GIS组件。GIS组件的代表作首推MapObjects以及MapX等。其中Ma2pObjects由全球最大的GIS厂商ESRI(美国环境研究所)推出,MapX由著名的桌面GIS厂商美国MapInfo公司推出。国内也涌现出一些优秀的组件如超图公司的Supermap和朝夕公司的Map2Engine,几种典型GIS组件对比从表1可以看出,在国内外众多的GIS组件中,各有长短。在实践开发中,开发者应本着“没有最好的,只有最合适的”的原则选择相应的组件产品。

表1 几种典型GIS组件的主要功能对比

功能

是否支持可视化叠加栅格图像对地图的常用操作图层控制属性数据绑定

功能GPS集成用户绘图图层扩展性地图标注地图符号化是否具有通用性

MapObjects

MapX

ArcObject

SuperMap

从空间数据的采集、编辑到数据的处理分析及结果输

出,所有的算法都由开发者设计,减少了开发成本,但受时间、财力等方面的,对开发者要求很高。采用DDE/OLEAutomation技术的开发方法和组件式GIS进行软件开发都属于集成二次开发,利用专业的GIS工具软件,实现GIS的基本功能,以通用软件开发工具尤其是可视化开发工具,进行二者的集成开发。它的优点是既可以充分利用GIS工具软件对空间数据库的管理、分析功能,又可以利用其它可视化开发语言具有的高效、方便等编程优点,集二者之所长,不仅能大大提高应用系统的开发效率,而且使用可视化软件开发工具开发出来的应用程序具有更好的外观效果,更强大的数据库功能,而且可靠性好、易于移植、便于维护,集成二次开发正成为应用GIS开发的主流方向,但这种方法的缺点是前期投入比较大。目前许多软件公司都开发了很多ActiveX控件,合理选择和运用现成的控件,直接调用,减少了开发者的编程工作量,使开发者避开某些应用的具体编程,不仅可以缩短程序开发周期,使编程过程更简洁,用户界面更友好,可以使程序更加灵活、简便。

3 结束语

本文研究了当前GIS应用软件开发的模式。针对高级语言开发、单纯二次开发与集成二次开发展开论述,总结归纳各自的开发特点,对比分析了这三类主要开发模式的优缺点。在具体的GIS系统的开发中要根据应用领域的特点与实际的情况采用合适的设计模式。

参考文献:

[1] MapInfo公司.MapInfo6.0联机帮助[CP/CD].MapInfo

是有是有是有是有

放大、缩小、放大、缩小、放大、缩小、放大、缩小、漫游等漫游等漫游等漫游等增加、移走、增加、移走、增加、移走、增加、移走、设置当前层设置当前层设置当前层设置当前层有较弱有无强有较弱是

有较强有有强有较强是

有强有有强有较强是

有强有有强有较强是

公司,2002.

[2] 张剑平.地理信息系统与MapInfo应用[M].北京:科学

VC、VB、PowerVC、VB、PowerVC、VB、PowerVC、VB、可使用的开发语言Builder、Delphi、Builder、Delphi、Builder、DelphiVB.net、C#等

Access等LotusNotes等等

出版社,1999.

[3] 徐学卫,杨松林.MapInfoGIS二次开发方法的研究与实

践[J].铁路航测,2001(2).

2 比较分析

当前GIS应用软件的几种开发模式,各有优缺

点。用户完全借助GIS工具软件提供的开发语言进行应用系统开发,可以利用宏语言,以原GIS工具软件为开发平台,开发出自己的针对不同应用对象的应用程序,这种方式省时省心,但进行二次开发的宏语言,作为编程语言通用性不强,功能差强人意,开发的应用程序仍然不尽如人意。利用高级语言开发,

[4] 马长发.基于VB的MapGIS组件式二次开发[J].

师范大学学报,2005(2).

[5] 李永红,邓红艳,赵敬东.组件式GIS开发的实践[J].计

算机工程与设计,2005(4).

[6] 许亮,刘涛.VC中MapInfo地理信息系统的二次开发

[J].网络与通信,2004(8).

[7] 李芳.基于VB的GIS开发[J].辽宁工程技术大学学

报,2004(8).

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务