6.1.1 GIS开发的一般过程
1. 需求分析
1)用户性质、规模、结构、职责的调查;
2)用户研究领域状况调查;
3)用户数量调查;
4)用户基础状况调查;
5)潜在用户和地理信息系统的潜力调查。
2. 可行性分析
可行性分析是从社会、技术、经济三个方面对系统的必要性和实现目标的可能性进行分析,以确定用户的现有实力、系统环境、资料、数据、数据流量、硬件能力、软件系统、经费预算等。
可行性分析的目的在于用较小的代价确定系统在技术上、资金上是否可以完成整个系统建设,以及系统建设完成之后,能否满足用户需求,所产生的效益,能否达到用户预期等问题。
3. 系统分析
系统分析是应用系统论的思想和方法,确定系统的开发对象,把复杂的对象分解成简单的组成部分,找出这些部分的基本功能属性和彼此间的关系。
4. 系统设计
系统的总体设计,旨在建立系统的逻辑设计模型,它要求系统设计人员遵循统一的准则和采用标准的工具来确定系统应包含哪些模块、用什么方法联结在一起,以构成一个最优的系统结构。
详细设计是在总体设计的基础上,结合系统物理实现所进行的详细规划,旨在具体进行程序编码之前,根据系统总体设计文档,细化总体设计中已划分出的每个功能模块,为之确定具体的算法,并将它清晰、准确的描述出来,以便在具体编码阶段可以把这些描述直接翻译成用某种程序设计语言书写的程序。
5. 系统实施
系统实施阶段主要包括:
1)系统硬件准备;
2)数据准备和数据库的建立;
3)系统模块的编制、调试;
4)用户主管人员和业务人员的组织、培训;
6. 系统维护和评价
地理信息系统软件维护的内容主要包括数据和应用系统的维护与更新。为使系统适应复杂的地理数据与运行环境,此期间对系统修改的内容可能是软硬件多方面的,软件方面如系统处理过程、程序、数据库等,此外还包括系统硬件的维护与更新。
系统评价是把即将投入使用的新系统与用户预期的目标进行比较,用不同的指标体现用户对新系统的满意度,从而确定是否需要对系统进行改进。
6.1.2 GIS的开发方式
1. 独立开发
独立开发不依赖于任何GIS工具软件,从空间数据采集、编辑到数据的处理分析再到结果输出,所有功能的算法都由开发者独立设计,然后选用某种程序设计语言,在一定的操作系统平台上编程实现,有时也被称作底层开发。
优势:不依赖任何商业GIS工具软件,开发者拥有完全的版权。
劣势:功能上难与商业化GIS工具软件相媲美,开发时间、人力等方面的成本较高。
2. 基于宏语言的二次开发
利用宏语言,以原GIS工具软件为开发平台,开发出满足用户需要的应用程序。
优势:易于掌握,省时省力,对开发人员要求相对不高,
劣势:基于宏语言的GIS二次开发有诸多限制,且程序不能脱离所在GIS平台独立运行,难以解决复杂问题。
3. 集成二次开发
利用专业的GIS技术或组件为GIS开发工具包,以通用软件开发工具尤其是可视化开发工具为开发平台,进行二者的集成开发,实现GIS的基本功能。集成二次开发中采用的技术方式主要有以下两种:
(1)OLE/DDE技术
采用对象连接与嵌入(Object Link and Embedding,OLE) Automation技术或利用动态数据交换(Dynamic Data Exchange,DDE)技术,用软件开发工具开发前台可执行应用程序,以OLE自动化方式或DDE方式启动GIS工具软件在后台执行,利用回调技术动态获取其返回信息,实现应用程序中的地理信息处理功能。
(2)GIS组件技术
利用GIS工具软件生产厂家提供的建立在OCX和COM技术基础上的GIS功能组件,如ESRI的ArcGIS Engine、MapInfo公司的MapX、超图公司的SuperMap Objects等,在支持COM和OCX的可视化高级编程语言工具环境中,直接将对应GIS组件的功能嵌入其中,实现地理信息系统的各种基本功能。
6.1.3 GIS开发的主要方向
GIS应用的三个不同类型:1、桌面GIS,即个人电脑和服务器终端的GIS系统;2、WebGIS,指基于Internet平台,客户端应用软件采用网络协议,运用在Internet上的地理信息系统;3、移动GIS (Mobile GIS),是以移动互联网为支撑、以智能手机或平板电脑为终端、结合北斗、GPS或基站为定位手段的GIS系统,是继桌面GIS、WEBGIS 之后又一新的技术热点。
在GIS开发方面,也对应有桌面GIS开发、WebGIS开发和移动GIS开发三个开发方向。
桌面GIS系统开发的方法和工具,具体见下一节。
WebGIS的开发和常规的Internet网络系统开发一样都分为服务器端和浏览器端,当前主流的GIS供应商都提供了相应的开发工具,常见的服务器端有ESRI 的ArcGIS Server、超图的SuperMap iServer 8C、SuperMap iClient 8C、MapInfo的MapInfo Xtreme Java等,客户端则针对不同的网络解决方案有不同版本的产品,这是由Internet的客户端的多样性跨平台性所决定的,目前主流的Internet客户端都支持JavaScript,所以用户可以选择对应的产品作为客户端开发的GIS工具包,具体有ESRI 的ArcGIS API for JavaScript,超图的SuperMap iClient 8C ForJava、MapInfo的MapInfo MapXtreme Java等。
移动GIS通常为轻量级GIS应用产品,主要基于常见的移动端操作系统进行开发,主要移动端操作系统有Android、iOS等,产品的形式多为移动APP,常见GIS厂商的GIS开发包为ESRI的ArcGIS Runtime SDK 、超图的SuperMap iMobile、百度的BaiduMap Sdk等,这些产品均有Android和iOS等多个版本。
除了上述常见的商业GIS平台之外,每个开发方向还有开源GIS提供对应的开发产品,诸如 OpenMap、mapServer、geoServer等,与商业GIS平台相比,开源GIS具有免费、开源等优点,但是因为是开源免费的,在平台的稳定性、完全性、易用性上都难以和商业GIS相比,不过商业GIS平台价格不菲,所以选取哪种GIS平台来进行开发建设,需要在系统建设的系统设计阶段就确定下来。
6.1.4 基于组件的GIS开发
1. GIS组件的体系结构
(1)基础组件:面向整个空间数据管理,提供基本的交互过程,处于平台最底层。
(2)高级通用组件:由基础组件构造而成,面向通用功能,如显示工具组件、选择工具组件、编辑工具组件、属性浏览组件等,它们之间的协同控制消息都被封装起来。这些组件经过封装后,使二次开发更为简单快捷。
(3)行业组件:将行业应用的特定算法抽象出来,并将其固化到组件中最终形成的,它可以加速开发过程。
2. 主要的组件式GIS平台及其功能
代表性的GIS组件产品有:
ESRI公司的MapObjects(简称为MO)
ArcGIS Objects(简称AO)
ArcGISEngine(简称AE)
MapInfo公司的MapX
Intergraph公司的GeoMedia
北京超图公司的SuperMap Objects
武汉吉奥公司开发的GeoMap。
3. ArcGISEngine
包含两个部分:
1)ArcGIS Engine运行时(ArcGIS Engine Runtime)是一组包含ArcGIS Engine核心组件的工具,以及扩展模块。它能够为用户提供一个运行ArcGISEngine开发的应用程序的环境。
2)ArcGIS Engine开发工具包(ArcGIS Engine Developer Kit)是由开发人员来开发客户化应用程序的一系列工具。
ArcGIS Engine开发工具包中主要包括如下几个控件:
1) LicenseControl控件:主要用来解决二次开发的GIS应用程序的权限许可问题。
2) MapControl控件和PageLayoutControl控件:分别对应了ArcMap中的“数据视图”和“布局视图”窗口,解决处理二维地图的浏览显示和地图制图方面的问题。
3) SceneControl控件和GlobeControl控件:分别对应了ArcGIS Desktop中的ArcScene中的Scene窗口和ArcGlobe中的Globe窗口,处理三维地图的浏览显示;一般在处理场景范围不大,对三维场景细节要求高的时候使用SceneControl控件,在处理大范围数据场景的时候,而且对三维场景模型的细腻程度要求不那么高的时候则使用GlobeControl。
4) TOCControl控件:与2、3中的控件配合使用,主要用来显示和完成对应地图的图层管理功能,诸如图层的拖拽移动、显示控制、移除等操作。
5) ToolBarControl控件:与2、3中的控件配合使用,主要完成添加调用ArcGIS自带的功能命令以及按照格式完成的自定义的GIS功能模块。但是界面美观性较差,一般成熟的GIS开发中,很少使用该控件。
6) SymbologyControl控件:主要用来辅助完成ArcGIS地图符号的选取、编辑、修改等管理功能。
4. 集成GIS二次开发程序实例
本例:在ArcGIS Engine 10.2及Microsoft Visual Studio 2010安装完全的情况下进行的,选择Microsoft Visual Studio 2010中的C#作为开发语言。
1)打开Microsoft Visual Studio 2010,选择菜单 “文件”>“新建”,打开新建项目对话框,选择项目类型、模板,设置工程名称、保存路径,单击确定;
2)弹出ArcGIS Project Wizard 向导添加引用对话框,添加ESRI.ArcGIS.Controls类库,点击Next;
3)选择许可检查对话框,勾选ArcGIS Engine和所需要的扩展模块权限,点击Finish;
4)修改Form1的text属性为ArcGISEngine Test,在工具箱中选择“ArcGIS Windows Forms” 选项卡,选择需要的ArcGIS Engine控件;
5)先向主窗体中添加Panel控件和SplintContainer控件,把Panel控件的Dock属性设置为Top,SplintContainer控件的Dock属性设置为Fill;向Panel控件中添加ToolbarControl控件,向SplintContainer控件的Panel1中添加TOCControl控件,Panel2中添加MapControl控件,分别设置各个控件的Dock属性为Fill;选择ToolbarControl控件,点击右键选择属性菜单,弹出窗口界面,在Items选项卡中选择要添加的功能按钮,包括打开地图、保存地图、逐步放大、逐步缩小、全局视图、前一视图、后一视图、移动、放大、缩小、识别等;
6)点击运行或按F5键,运行程序。
本节视频

