1、基于基于ArcObjects的应用系统开发的应用系统开发教学目标教学目标uGIS二次开发技术二次开发技术是是GIS本科生、研究生的重要专业本科生、研究生的重要专业基础课程,通过该课程学习,使学生基础课程,通过该课程学习,使学生了解了解ArcGIS 软件软件家家族族体系体系的架构的架构及及ArcObjects组件构成,并能熟练使用组件构成,并能熟练使用ArcObjects 进行进行应用型应用型GIS开发。开发。u通过课程学习,掌握应用型通过课程学习,掌握应用型GIS开发的基本思路、技术方开发的基本思路、技术方法,并能够顺利转换至开源法,并能够顺利转换至开源GIS、SuperMap、MapInfo
2、或或其它其它GIS应用开发包和集成开发环境应用开发包和集成开发环境常见的二次开发方式常见的二次开发方式u独立开发独立开发GIS系统系统u宿主型二次开发宿主型二次开发利用利用GIS平台本身的脚本语言开发(平台本身的脚本语言开发(MapBasic、Avenue)基于基于VBA的嵌入式宏语言开发模式(的嵌入式宏语言开发模式(ArcGIS Desktop)基于基于Python的脚本语言开发模式(的脚本语言开发模式(ArcGIS Desktop)u基于基于GIS组件的二次开发组件的二次开发一、独立开发一、独立开发GIS系统系统u独立开发独立开发GIS是指不依赖任何是指不依赖任何 GIS底层软件底层软件u
3、空间数据采集、编辑、处理、分析及结果输出,所有算法空间数据采集、编辑、处理、分析及结果输出,所有算法由开发者独立设计(利用由开发者独立设计(利用C、C+等)。等)。u优势:不采用第三方的优势:不采用第三方的GIS平台,减少这部分的费用平台,减少这部分的费用u但单纯底层开发但单纯底层开发GIS系统,所用的时间和精力可能会远远系统,所用的时间和精力可能会远远超过使用商业超过使用商业GIS平台。平台。二、宿主型开发二、宿主型开发GIS平台脚本平台脚本u指采用指采用GIS平台自己提供的脚本语言进行二次开发。平台自己提供的脚本语言进行二次开发。如如MapInfo Professional提供提供MapB
4、asic 语言语言ESRI 的的ArcInfo 提供了提供了Avenue 语言。语言。u优势:以优势:以GIS 软件脚本语言开发应用程序,简单、快速。软件脚本语言开发应用程序,简单、快速。u劣势:脚本语言功能较弱,不能脱离劣势:脚本语言功能较弱,不能脱离 平台软件,效率不高平台软件,效率不高。二、宿主型开发二、宿主型开发VBA宏语言宏语言uVBA(Visual Basic for Application),),VBA是是VB的子集的子集u许多应用程序,支持许多应用程序,支持VBA嵌入式开发环境嵌入式开发环境ArcMap、ArcCatalogMicrosoft Word ExcelAutoCAD
5、 Visual Basic for Applications(VBA)uArcMap程序框架中,程序框架中,Application和和ThisDocument全局变全局变量可以让程序员直接获取程序本身和程序所使用的文档。量可以让程序员直接获取程序本身和程序所使用的文档。二、宿主型开发二、宿主型开发Python脚本脚本uPython and ArcPy(ArcGIS installs Python version 2.6.)uAll geoprocessing tools,as well as a wide variety of useful functions for interrogatin
6、g GIS data are available in the ArcPy site-package.uA site-package is Pythons term for a library that extends the Python language with additional functionality.The ArcPy site-package is how ArcGIS delivers GIS functionality to Python.You can think of ArcPy as replacing arcgisscripting in your Python
7、 code.ArcPy contains two important modules:the mapping module(arcpy.mapping)for interacting with ArcMap and creating map books,and the spatial analyst module(arcpy.sa)for performing map algebra.A third module,geostatistical analyst,contains classes for setting up complex neighborhood searches.三、基于三、
8、基于GIS组件的二次开发组件的二次开发u是指采主流开发语言环境,如是指采主流开发语言环境,如VB、C+、JAVA、C#等,等,在使用第三方底层在使用第三方底层GIS平台基础上进行平台基础上进行GIS二次开发。二次开发。基于基于ArcObjects的组件开发(的组件开发(ESRI)基于基于MapObjects、ArcEngine的组件开发(的组件开发(ESRI)基于基于MapX的组件开发(的组件开发(MapInfo)基于基于SuperMap Objects的组件开发(的组件开发(SuperMap)MapGIS K9开发平台(开发平台(MapGIS,零编程搭建式),零编程搭建式)u这种方式的优势是
9、可以根据自己的需要扩展系统功能,并这种方式的优势是可以根据自己的需要扩展系统功能,并且可以脱离原且可以脱离原GIS平台软件。平台软件。ArcGIS软件体系结构软件体系结构SuperMap 的的UGC模式模式“共相式GIS”是对GIS平台软件进行共相式的概括和抽象,提炼出独立于具体技术环境之外的GIS技术框架和核心功能。(核心思想:建立一套具有普遍适应性的共相式GIS内核Universal GIS Core)部分开发方式的简单演示部分开发方式的简单演示u基于基于MapBasic窗口,体验窗口,体验MapBasic语言语言u基于基于VBA的的ArcObjects开发(开发(ArcGIS Deskt
10、op)u基于基于Python的地理处理(的地理处理(ArcGIS Desktop)u基于基于ArcEngine的组件开发(独立应用程序)的组件开发(独立应用程序)uSuperMap Objects开发开发MapBasic语言展示语言展示基于基于VBA的的AO开发开发u演示缩放工具演示缩放工具u编写提取文档、地图、图层名称的宏模块编写提取文档、地图、图层名称的宏模块基于基于Python的地理处理的地理处理基于基于ArcEngine的开发的开发Demo教材及参考材料教材及参考材料u参考教材:参考教材:ArcGIS Engine组件式开发及应用,李崇贵等,科学出版社组件式开发及应用,李崇贵等,科学出
11、版社基于基于ArcObjects与与C#.NET的的GIS应用开发,兰小机等编著,冶金应用开发,兰小机等编著,冶金工业出版社工业出版社ArcObjects 开发基础与技巧,蒋波涛,电子工业出版社开发基础与技巧,蒋波涛,电子工业出版社ArcGIS开发宝典,刘仁义开发宝典,刘仁义,科学出版社,科学出版社插件式插件式GIS应用程序开发框架,蒋波涛,电子工业出版社应用程序开发框架,蒋波涛,电子工业出版社u参考材料:参考材料:ArcGIS 开发工具包中的文档,包括开发工具包中的文档,包括ArcGIS开发帮助、组件帮助、开发帮助、组件帮助、对象模型图和示例对象模型图和示例http:/ SDK 10 Mic
12、rosoft .NET Frameworkhttp:/ of developing with ArcObjects(1周)周)uArcObjects组件对象模型组件对象模型,Com&.Net(1周)周)u基于基于VBA的的ArcObjects开发(选修开发(选修1周)周)u使用使用ArcObjects控件编程控件编程(2周)周)uGeometry(1-2周)周)uMaps and Layers(1-2周)周)uSymbolizing elements and layers(2周)周)uWorking with subsets and selections(1周)周)uData access a
13、nd creation(1周)周)uGeoprocessing(1周)周)uSpatialAnalyst(1周)周)u基于基于Python的的ArcObjects脚本开发(简介)(选修脚本开发(简介)(选修1周)周)u综合案例开发实践(综合案例开发实践(2-3周)周)学习基础学习基础u熟悉熟悉ArcGIS Desktop(ArcMap、ArcCatalog、ArcToolbox)的基本操作;)的基本操作;u理解理解ArcGIS Desktop的系统结构的系统结构u了解数据组织模式,如了解数据组织模式,如Geodatabase、ArcSDE基本概念;基本概念;u会用会用C#或其他面向对象的语言进
14、行程序设计。或其他面向对象的语言进行程序设计。课程考核课程考核u基于基于ArcObjects的程序设计书面考核的程序设计书面考核u完成几个相对独立的功能开发案例完成几个相对独立的功能开发案例u完成一个简单、完整完成一个简单、完整的的GIS应用系统,按应用系统,按GIS软件工程的软件工程的要求进行设计,要求进行设计,具体要求如下:具体要求如下:实现实现自定义命令、工具、菜单自定义命令、工具、菜单具备具备GIS的的数据管理,如数据管理,如打开、保存地图文档、添加数据打开、保存地图文档、添加数据等等空间数据编辑功能空间数据编辑功能空间空间数据查询与分析数据查询与分析图形显示与图形显示与空间数据符号化空间数据符号化空间查询与空间分析空间查询与空间分析地图布局设计地图布局设计练习、思考与讨论练习、思考与讨论u体验不同的体验不同的GIS编程方式编程方式MapBasic语言编程语言编程Python脚本处理脚本处理u访问可用的参考资源,初步了解基于访问可用的参考资源,初步了解基于ArcObjects的编程的编程u初步了解初步了解Visual Studio 2008(或(或2010)集成开发环境)集成开发环境u从从WEB上寻找其它可以利用的学习资源上寻找其它可以利用的学习资源u分析各种开发方式的适用领域分析各种开发方式的适用领域