二次开发有关硕士毕业论文范文 和ArcGIS二次开发综述相关专科开题报告范文

这篇二次开发论文范文为免费优秀学术论文范文,可用于相关写作参考。

ArcGIS二次开发综述

摘 要:ArcGIS是一个全面的GIS平台,具有多种二次开发方式,为行业应用提供了丰富多样的手段.ArcGIS传统的二次开发方式主要是基于脚本和COM组件技术.随着云计算和移动计算的兴起和大数据的广泛应用,传统开发方式的缺点异常凸显,例如不能跨平台、开发难度大、性能低、无法利用云计算资源等,难以融入到主流的信息浪潮中.本文分析了ArcGIS的二次开发历史和最新的开发方式,讨论了其优缺点,指出未来ArcGIS二次开发的方向应具有可视化、开源、跨平台、云计算等特点.本综述为云计算和大数据背景下高校GIS教学、科研和商业软件开发人员应对新的挑战提供了参考.

关键词:测绘前沿;地理信息系统二次开发;云计算;大数据

随着计算机信息技术和地理信息科学的快速发展,测绘地理信息产品已进入到千家万户,成为信息社会生产、生活不可或缺的基本工具.GIS(Geographical Information System)二次开发是GIS应用于行业应用的重要方式.ArcGIS是美国ESRI的GIS产品,以技术可靠、算法先进、实用性强而著称于世,在软件体系结构和空间数据库方面一直引导着GIS行业的发展,其发展基本代表了国际地理信息系统技术的最前沿水平.ArcGIS由于丰富多样的开发方式,可以为各行各业提供灵活的方式.

目前,随着大数据和云计算的发展,ArcGIS的二次开发方式也发生着急剧转变.本文针对高校GIS教学、科学研究及基于ArcGIS的商业软件开发如何应对新的挑战,综述了ArcGIS二次开发历史和最新开发方式,分析了各种开发方式的特点,探讨了ArcGIS二次开发的发展方向.

一、ArcGIS 传统的二次开发方式

(一)脚本语言开发

在E S R I 早期提供了专用的脚本语言( S c r i p tl a n g u a g e s ) 作为扩充A r c G I S平台的二次开发方式.脚本语言可以缩短编译型语言的编写-编译-链接-运行(edit-compile-link-run)过程,通常具有简单、易学、易用的特性,能让非专业程序员快速完成GIS的界面和功能的,是降低专业ArcGIS的难度,从而使ArcGIS走向大众,与行业结合的重要手段.

1 脚本语言Avenue

ArcView是ESRI较早推出的基于窗口的集成式GIS系统,Avenue是基于ArcView平台的面向对象的程序设计语言.利用ArcView的Script文档界面编制Avenue程序,实现新的功能或者重组ArcView界面,深入,开发行业应用系统.ArcView也是用Avenue开发的,所以每个ArcView命令实际上是在执行某个Avenue脚本程序.在二次开发时,如果想要开发的功能与ArcView的现有内容比较相似,查找并参考ArcView的系统脚本以实现快速开发的目的[1].

Avenue特点分析如下:

Avenue对地理图形的处理能力较强,支持DDE(动态数据交换)和DLL(动态链接库)技术,可以调用其他应用程序.Avenue程序易于与诸如VB、Visual C++、PowerBuilder和Delphi等语言编写的应用软件集成[2].

Avenue不支持OLE技术,不允许用户自定义类和对象.ArcView在3.0版本首次推出DLL技术,对DLL的支持较为有限,Avenue语言不能应用全部动态链接库,支持的数据格式也不是很全面[3].而且Avenue语言无法识别扩展名为dll(.dll)的文件,而要以此dll文件创建DLL对象,再生成一个DLLPROC对象后使用.

2 脚本语言AML

AML(Arc Macro Language,ArcInfo宏语言)是用于在ArcInfo Workstation的专有高级编程语言,可以直接在写字板中编辑成文本形式[4].AML提供可视化菜单、对话框编辑工具,利用ArcInfo提供的空间分析命令和函数,可以设计实现基于GIS的决策支持系统[5].

AML特点分析如下:

ArcInfo功能强大,但操作复杂.AML简单易学,所实现的功能能够很快应用于生产作业,特定的专业平台,使操作简易快捷[ 6 ].A r c I n f oWorkstation利用AML可以调用GIS操作或命令,执行地理处理工作流.

ArcGIS 9.0新增了对Python脚本语言的支持,Python不仅开源,而且功能比AML更强、可编写比较复杂的工作流,某些函数(如LISTFILE)只有Python可以更好地支持.由于AML的局限性,基于Python的ArcPy将会取代AMl,成为未来ArcGIS的二次开发脚本.

(二)COM组件

过去使用专用的脚本语言较贵,而且增加了开发人员的学习成本,限制了GIS开发的推广和使用.随着计算机技术的快速发展,组件式GIS(COMGIS)变成现代GIS的发展方向之一.COMGIS为解决传统GIS面临的问题开辟了新的方向.组件式GIS让开发人员不必学习新的GIS专用开发语言,在通用的集成开发环境中使用GIS控件,就可以和普通应用程序集成,更好地满足GIS普及和推广的需求[7].

组件式GIS的思想是把GIS功能进行分类,遵循“高内聚、松耦合”的原则,组织为几个控件.可视化开发工具负责进行集成,以在各GIS控件之间,以及GIS控件与其他非GIS控件之间进行通信,从而形成GIS软件[7].

COM组件式对象模型(Components ObjectsModel)是一种开发对象组件的二进制标准,是进行组件互操作的面向对象的软件体系结构,与所创建语言无关.COM组件既可在Windows程序(利用VB、VC开发)中运行;也可在Web页面运行,Web页中的控件通过脚本(如JaScript)实现互相通讯.COM要求组件由对象和对象的接口组成,接口在形式上表现为对象的属性、方法和事件.

1 小型二次开发组件MapObjects

MapObjects(MO)是ESRI早期在ArcView时代推出的COM组件,是GIS组件的典型代表.MO可以与另外的多媒体和数据库开发技术集成,开发独立的综合性应用软件,满足前端地图应用业务开发[8,9].

MO由一个称为MAP的ActiveX控件(OCX)和约45 个自动化对象组成[10],适用于工业标准的面向对象的可视化程序设计环境,如VB、Delphi、VC、Delphi.MO的可编程对象包括六类:地理匹配对象、数据访问对象、地图显示对象、几何图形对象、投影对象和实用对象.GIS应用开发人员在通用开发平台上(如Visual Studio)调用以上对象的方法、属性来实现地图展示和分析功能[7].

MO支持的数据源兼容ArcGIS,可以读取简练的桌面形文件文件(Shape)、经典拓扑关系数据ArcInfo Coverage和基于数据库管理系统和ArcSDE的GeoDatabase.除了矢量数据外,MO还能够读取多种格式的栅格数据,如BMP、TIF、JPG、ArcInfo的Grid、Erdas的Image等.MO能够生成Shape文件,该格式已经被大多数GIS和RS软件支持,成为GIS桌面应用的业界标准格式[8].

MO特点分析如下:

由于在ArcView上二次开发的对话框和界面功能不理想,而使用MO就比较适合于各种应用.MO可以具有地图查询和空间分析等GIS功能,而面向对象编程语言和可视化集成开发环境具有友好灵活的界面和数据库连接功能,促进了快速开发地理信息应用系统[11].当用户仅使用地图显示、编辑、查询以及简单的空间分析等GIS基础功能时,MO是很好的选择,不需要庞大的GIS平台支持,开发应用变得简便快捷.

但MO有其固有的缺点,功能较少,高级功能缺乏,如拓扑编辑、网络分析、三维表面模型、高质量地图输出等[12],因此MO不适合大型的、要求较高的GIS项目.

2 全功能细粒度组件ArcObjects

ArcObjects(AO)COM组件是ArcGIS Desktop的基础,是一个功能强大的GIS开发平台,具有粒度细、伸缩强、部署广等特点.AO组件库包括ArcGISDesktop的基本功能,例如,ArcGIS Desktop和很多别的ESRI产品就是基于AO实现的.每一个AO组件中有不同的类,类定义了不同的接口,接口包含许多的属性和方法.类之间有类型继承(T y p eInheritance)关系,接口之间有互相调用(Query-Interface)及相互继承(Interface Inheritance)关系.A O 常见的控件包括M a p C o n t r o l 、PageLayoutControl和SceneControl.二、三维地图的显示、分析、制图和输出主要是以这三个控件为平台进行开发的[13].

利用AO进行二次开发,包括以下几种模式:

(1)VBA.Visual Basic for Applications(VBA)是微软基于Visual Basic开发出来的一种宏语言,在桌面应用程序中用于执行自动化(OLE)任务,主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件,ESRI将其引用到ArcGIS桌面开发中来.利用ArcGIS内嵌的VBA,可以调用AO库组件实现功能扩展,方法简单、易于使用,适用于非专业程序员进行简单的二次开发.

VBA编写的脚本不能脱离桌面软件独立运行,安全性差.在ArcGIS 10.1之后,出于产品战略考虑( VBA需要授权,不开源,更不能跨平台),ArcGIS内部不再支持VBA.如果地图文档(MXD)中含有V B A 脚本, A r c G I S 软件( 以及A r c G I SEngine)将直接忽略.因此如果在ArcGIS 10.1之后使用VBA对用户权限进行控制,将没有任何意义.如果需要在ArcGIS10.1以后的版本中继续使用VBA脚本,可以手动安装“ArcGIS Desktop面向开发人员的VBA资源”.

(2)插件(Add-ins)开发.ArcGIS桌面的插件模型(add-in model)提供了基于声明式框架(declaratively-based framework),利用单个压缩文件生成自定义扩展包.由于插件不需要安装或COM注册,因此插件易于共享和部署.插件可以通过.NET、Python和XML(extensible MarkupLanguage)语言来进行开发.

由于插件没有注册步骤,因此开发插件时不能有外部依赖,例如程序集、服务等.同时插件不能自由控制界面,不能脱离ArcGIS环境.插件是开发专业的、复杂的辅助生产工具和科研工具的首选方法,但不适合商业软件开发.

( 3 ) 独立的应用程序.独立的应用程序(stand-alone applications)可以生成图形用户用户界面(graphic user interface,GUI)的窗口程序,或者没有交互的自动化工作流.其一般流程就是新建一个EXE工程,引入AO库,然后调用AO以完成所需功能.因为要完成ArcGIS桌面程序的某些功能,所以适用性和创新型不强,而且开发方式难度大[14].

由于AO是ArcGIS的基础,并不提供单独的运行时(runtime),因此用AO开发的应用程序表面是独立的,实际上不能脱离ArcGIS桌面软件,因此这种独立是表面,没有多大实际意义.这种开发方式,由于开发难度较大,需要安装,也不能跨ArcGIS版本,除了一些演示系统外,有被Add-In取代的趋势.

AO开发的特点:

因为AO是基于COM而设计的,开发人员可把自定义的组件融合到现有框架中,从底层扩展AO;还可以根据业务需求重构工作流.总之,利用AO开发GIS应用软件符合现代软件工程的思想,搭积木式的组装开发方式,简化了开发过程;自组件也弥补了AO的限制,扩展了系统功能,很好地解决应用系统中存在的实际问题[15].

但AO的设计太过庞大、复杂、混乱.由于AO是完全基于落后的COM理念设计,在AO代码中处处充斥着强制类型转换和异常代码,不符合现代程序设计的类型安全的基本原则.同时AO粒度过细,对象之间的关系错综复杂,使得AO一切皆有可能,而一切都很困难,即使专业GIS开发人员,依然难以掌握.而且AO不能脱离ArcGIS桌面而存在,使用AO功能必须购买ArcGIS桌面程序,许可昂贵.因此粗粒度、可以脱离ArcGIS桌面的组件显得十分必要.

3 嵌入式粗粒度组件ArcGIS Engine

2004年,ArcGIS 9.0系列产品中新加入ArcGISEngine(以前叫ArcEngine,简称AE),一个包含完整类库的嵌入式GIS软件[16].AE提供了一系列可以在ArcGIS for Desktop(以前叫ArcGIS Desktop和AO)框架之外使用的GIS组件.AE包括AO的核心功能,是对AO中的大部分接口、类等进行封装所构成的嵌入式粗粒度组件,AE中的组件接口、方法、属性与AO是相同或类似的.

ArcEngine开发特点:

AO必须依赖ArcGIS Desktop桌面平台,即购买安装了ArcGISDesktop的同时,安装AO,才能利用AO进行开发;AE是独立的嵌入式组件,是真正独立的COM组件,可利用其在不同开发语言环境下开发.

AO的功能更强大,AE的功能相对弱些,例如AE少了部分UI(User Interface),即缺少一些ArcGIS本身的图形界面的工具及对话框.但AE具有简洁、灵活、易用的特点,同时AE要比AO便宜很多,是目前基于ArcGIS的商业软件的主要开发方式.

(三)ArcGIS传统二次开发模式的不足

通过上面的讨论,可以看出,ArcGIS传统的二次开发主要有脚本语言和COM组件二种开发方式,脚本语言包括Avenue语言,AML语言;COM组件包括小型组件MapObjects和细粒度AO和粗粒度AE组件.利用脚本对ArcGIS进行二次开发,需要专门掌握专门的程序设计语言,且这种专用语言应用狭窄,不能应用到其他行业,与通用脚本语言(如JaScript,Python)相比,功能弱、用户少、资源少.对非专业GIS人员来说,掌握一门应用狭窄的脚本语言显得投资过大,而且难以与管理信息系统(MIS)、业务办公系统(OA)集成,因此ArcGIS在较新版本中逐步摒弃了这种开发方式,转而采用世界主流的、开源的、有广大用户群的脚本语言(例如Python、R).

COM组件曾是微软力推的一种代码复用系统框架,但在软件日益庞大、功能日益复杂的今天,其弊端也日益凸显,例如接口设计复杂、版本控制和令人恐怖的“DLL地狱”、GUID等等.COM主要是微软Windows平台上的独有、古老的技术,不具备现代程序设计理念,极度依赖注册表,跨平台困难,缺少类型安全、调试也不方便,而且系统不稳定.由于互操作和注册表操作等原因,导致了系统运行缓慢.

二、ArcGIS 二次开发的变革

随着大数据、云计算、移动计算、跨平台等技术的快速发展,传统的二次开发由于架构和设计理念,难以融入到主流的信息浪潮中,因此极有必要构建新的软件开发体系,采用全新的架构,支持跨平台、多核多线程、并行计算、云计算等,提升软件性能,降低开发难度.由此ArcGIS提供了全新的二次开发方式,以应对新的挑战.

(一)可视化Model builder

Model builder(模型构建器)是用于构建工作流模型的可视化编程语言和环境.在这里,模型是指将一个工具的输出,作为另一个工具的输入,从而将一系列相关的地理处理工具串联在一起,形成的工作流.模型构建器有助于以批处理的方式构造和执行简单工作流,还能通过创建模型并扩展ArcGIS功能.模型构建器简单易用,不需要专业的软件开发知识,模型可以在Python脚本和其他模型中使用.加拿大Safe Software公司的FME(Feature ManipulateEngine)和美国Exelis Visual Information Solutions公司的ENVI(The Environment for VisualizingImages)都采用模型构建器作为地理空间数据处理的主要方式.地理模型构建器适用于批量处理重复的流程,例如把全省、全国数据数据从MapGIS格式转换到ArcGIS格式.

(二)开源Python

Python是一种开源、可移植、跨平台、稳定成熟的解释型编程语言.ArcGIS 9.0引入了Python,ArcPy是一个以成功的arcgisscripting模块为基础的Python站点包.现在Python成为ArcGIS中进行地理空间数据分析、转换、管理和自动化的脚本语言,取代了原来的Avenue、AML和VBA.

Python适用于交互式操作以及为程序快速制作原型,同时其具有编写大型应用程序的强大功能.Python易于学习,非常适合初学者,也特别适合专家使用,用户社区规模大,资源多.

(三)云计算ArcGIS runtime

利用ArcGIS Runtime(https://developers.arcgis.com/arcgis-runtime)可以开发支持众多主流平台和设备的原生(native)GIS程序.ArcGISRuntime版本众多,而且还在快速发张中,目前包括Android、iOS、Ja、.NET、OS X、Qt和Xamarin(附表).

从附表可以看出,ArcGIS Runtime直接支持现代编程语言(如C#、Ja、Objective-C、Qt),原生支持主流操作系统(如Windows系列、Linux系列)和移动平台(如Android、iPhone等).这些API都基于同一个C++内核,使得在各种平台的接口风格和编程模型相一致;并在不同平台上做了对应的封装,又具有原生API的特点,因此开发流畅,避免了互操作(interop)所带来的性能损失和阻抗失配;这与10 年前北京超图的SuperMap GIS Universal共相式地理信息系统的理念一致[17].

ArcGIS Runtime是ESRI基于现代软件开发理念开发的GIS二次开发包,摆脱了过去COM组件的局限,具有类型安全、跨平台、轻量级、云计算、异步调用、渲染快速、性能优越等现代GIS开发包的特点,是未来利用ArcGIS开发独立应用程序的主流模式.ArcGIS Runtime的主要功能包括在离线一体化(online or offline)、二三维一体化、地图编辑、地理编码(geocoding)、路径导航(routing)和可视化.ArcGIS Runtime具有开发简单、灵活多样、体验良好、容易部署等特点,适用于云计算和大数据的背景下的行业应用.

三、结论和建议

传统的ArcGIS二次开发包括脚本语言(Avenue和AML)以及COM组件(小型MapObjects,细粒度AO和粗粒度ArcGIS Engine),为过去ArcGIS的行业应用和普及提供了支持.ArcGIS专用的脚本语言存在功能弱、安全性差、应用窄等缺点;而COM组件由于设计理念落后、版本控制难(例如,ArcGIS桌面软件各版本不能同时安装在一台电脑上,ArcGIS Engine和ArcGIS桌面软件版本必须一致),还有注册表、不能跨平台、非类型安全、开发难度大、部署困难等系列问题.

目前,ArcGIS二次开发采用了全新的设计理念,具有可视化、开源、云计算、移动计算、跨平台等特点.例如,地理处理模型构建器具有可视化特点,ArcPy具有开源特点,ArcGIS Runtime具有云计算、移动计算和跨平台等现代GIS的特点.

当前高校GIS教学、科学研究、生产单位数据处理以及商业软件开发,应把握GIS发展方向,果断淘汰过时落后的技术,融入到云计算和大数据的发展方向.例如,在高校GIS二次开发教学时,应该由原来的“VB 6+MapObjects”转换到“.NET+ArcGISRuntime”环境中来;科学研究需要使用脚本语言时,应该由Avenue、AML或VBA转换到ArcPy来,以充分利用全世界Python开源社区已有的科研成果;非专业人员重复的空间数据处理流程自动化,可以考虑利用可视化的地理处理模型构建器.

二次开发论文范文结:

关于本文可作为二次开发方面的大学硕士与本科毕业论文二次开发论文开题报告范文和职称论文论文写作参考文献下载。

1、西部大开发杂志社

2、房地产开发和经营论文

3、石油勘探和开发期刊

4、西部大开发杂志

5、开发杂志社