资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2,#,牟乃夏,ArcGIS Engine,地理信息系统开发教程配套,PPT-,第,2,章 桌面,GIS,应用软件的开发方式,1,2,目录,1.,使用,VBA,进行桌面软件开发,2.,使用,DLL,进行桌面软件开发,3.,使用,Add-In,进行桌面软件开发,4.,使用,ArcGIS Engine,构建独立应用程序,5.,不同开发方式的比较,2,2025/7/15 周二,1.,使用,VBA,进行桌面软件开发,通过,VBA,开发环境进行,ArcGIS,桌面软件的扩展和定制是最简单的,GIS,软件开发方式。只需专注于,ArcGIS,软件不能提供的功能,,对于,ArcGIS,软件已经提供的工具,直接“拿过来”使用即可。并且,VBA,环境本身已经提供了对整个应用程序和文档进行控制的变量,例如在,ArcMap,中开发人员可以直接通过,Application,、,ThisDocument,两个全局变量获取程序本身和程序所使用的文档对象,使开发更为快捷和简单。,在,ArcGIS 10.0,版本,中,进行,VBA,的开发需要单独安装,VBA,开发程序模块,安装,ArcGIS Desktop,时不再附带,VBA,安装选项。根据操作方式的不同,在,ArcGIS Desktop,中进行,VBA,编程的方法有两种:一种是,编写,VBA,宏命令,,另一种是,创建,UIControl,工具,并在其事件中写入实现代码。,3,2025/7/15 周二,1.,使用,VBA,进行桌面软件开发,宏命令方式,开发人员将那些能够,自动执行某种操作的命令,统称为,宏(,Macros,)。,宏是一种操作命令,它和菜单操作命令的使用方式一致,因此可以认为宏和普通的命令是一样的。,创建宏,在,ArcMap,中,点击主菜单中的【,Customize,】菜单,选择【,VBA Macros,】然后选择【,Macros,】或者直接按【,Alt+F8,】键弹出宏命令对话框。,创建宏,4,2025/7/15 周二,1.,使用,VBA,进行桌面软件开发,在,VBA,程序界面中,完成,CreateLayerBySelection(),过程(,Sub,),,实现根据选择集创建临时图层的操作,。,5,2025/7/15 周二,1.,使用,VBA,进行桌面软件开发,添加宏命令,关闭,VBA,环境回到,ArcMap,环境中,点击主菜单中的【,Customize,】菜单,然后选择【,Customize Mode,】,在,Commands,选项卡中单击“,Macros,”可以看到刚才创建的宏命令出现在对话框中,选中该宏命令拖动至,ArcMap,工具条中,,完成宏命令的添加。,使用宏命令,单击,工具条上的,宏命令按钮,,ArcMap,根据当前选择集的情况自动创建临时图层,并将创建的临时图层添加到当前地图中。,6,2025/7/15 周二,1.,使用,VBA,进行桌面软件开发,UIControl,方式,UIControl,工具,可以提供交互式的操作,如,使用鼠标拖拽的方式来实现拉框放大、缩小等,宏命令,是,无法做到,的。,UIControl,是一种,交互式开发,方式。,创建,UIControl,在,ArcMap,界面中,点击主菜单中的,【Customize】,,然后选择,【Customize Mode】,,弹出,【Customize】,对话框,在,Commands,选项卡中找到“,UI Control”,,然后点击,【New UIControl】,,弹出,【New UIControl】,对话框。,UIControl,类型,用途,UIButtonControl,创建,Button,(按钮),UIToolControl,创建与,Map,交互的,Tool,(工具),UIEditBoxControl,创建,EditBox,(编辑框),UIComboBoxControl,创建,ComboBox,(组合框),UIControl,类型与用途,7,2025/7/15 周二,1.,使用,VBA,进行桌面软件开发,以“,定位到所选范围,”功能为例,,介绍,UIControl,的用法,。,MouseDown,事件,代码,8,2025/7/15 周二,2.,使用,DLL,进行桌面软件开发,动态链接库(,Dynamic Link Library,,,DLL,)是,Windows,平台下的一种,类文件编译格式,,这种格式的文件可以被任何支持,COM,规则的语言所支持和引用,,ArcObjects,组件本身的物理文件就是,DLL,文件。,DLL,开发方式的特点是,开发环境脱离了,ArcGIS Desktop,软件,,,可以使用,如,Java,、,C#,等语言进行开发,。,实际上,开发大型软件一般采用,DLL,的方式将,一类相似的操作进行封装,,这样不仅提高了程序的复用性,减少了代码开发的工作量,而且便于软件的更新和分发。,9,2025/7/15 周二,2.,使用,DLL,进行桌面软件开发,1,)启动,Visual Studio 2010,,创建一个新项目。在,【,新建项目,】,对话框中,在“,Visual C#”,选择项下,选择“,ArcGIS”“,Extending ArcObjects,”,,在右侧窗口中选择“,Class Library,(,ArcMap,)”,并输入名称“,SampleDll”,、指定存储位置“,C,:,”,,点击,【,确定,】,按钮,新建一个项目。,10,2025/7/15 周二,2.,使用,DLL,进行桌面软件开发,2,)添加,ArcGIS,引用项,。,3,)添加新建项,11,2025/7/15 周二,2.,使用,DLL,进行桌面软件开发,4,),本实例为新建一个工具,因此在弹出的【添加新项】对话框中,选择“,Extending ArcObjects,”“,Base Tool,”,并输入工具名称“,ZoomIn,”,点击【添加】按钮。,5,),由于实例是对,ArcMap,桌面程序的扩展,所以在弹出的对话框中选择“,ArcMap,MapControl or PageLayoutControl Tool,”选择项。,12,2025/7/15 周二,2.,使用,DLL,进行桌面软件开发,6,),在添加的工具类中,分别在,base.m_category,、,base.m_caption,、,base.m_toolTip,、,base.m_name,等属性中输入工具的类别名称(可使用本地化字符)、名称(可使用本地化字符)、鼠标放置在工具上时的提示信息(可使用本地化字符)、名称(程序中的唯一,ID,,使用非本地化字符)等信息,然后在,OnMouseDown,事件处理函数中添加如下代码,实现将当前视图窗口定位到鼠标所绘范围的功能。,13,2025/7/15 周二,2.,使用,DLL,进行桌面软件开发,运行程序后并没有显示,ZoomIn,工具,,这时需要对,DLL,功能应用部署。,14,2025/7/15 周二,3.,使用,Add-In,进行桌面软件开发,Add-In,是,ArcGIS 10.0,提供的一种能够快速扩展桌面应用程序的全新的扩展方式。,其特点包括:,1).,容易创建,2).,更易共享,3).,更加安全,4).,更易安装和管理,15,2025/7/15 周二,3.,使用,Add-In,进行桌面软件开发,下面以“获取多边形选择集”为例,介绍如何采用,Add-In,开发方式进行桌面程序的扩展,。,1,),启动,Visual Studio 2010,,选择【文件】【新建项目】,在弹出对话框左侧“,Visual C#,”选择项下,选择“,ArcGIS,”“,Desktop Add-Ins,”,在右侧窗口中,选择“,ArcMap Add-in,”方式,输入新建项目的名称“,SampleArcMapAddin,”,选择项目的存储位置“,C:,”,点击【确定】按钮,创建,Add-In,示例项目。,16,2025/7/15 周二,3.,使用,Add-In,进行桌面软件开发,2,),设置,Add-In,描述信息,3,),Add-In,类型选择,Add-in,类型,用途,Button,Button,(按钮),Tool,与,Map,交互的,Tool,(工具),Combo Box,ComboBox,(组合框),Multi-Item,菜单和右键菜单,Extension,应用程序扩展,Editor Extension,编辑扩展,Dockable Window,可停靠窗体,17,2025/7/15 周二,3.,使用,Add-In,进行桌面软件开发,4,),在生成的,Add-In,工程中,包含两部分内容,即,Config.esriaddinx,和,SelectTool.cs,。,其中,Config.esriaddinx,文件包含,Add-In,的配置信息,,SelectTool.cs,文件是实现获取选择集功能的类文件,。,18,2025/7/15 周二,3.,使用,Add-In,进行桌面软件开发,5,),本例是通过多边形选择工具来获取选择集,因此使用鼠标的,OnMouseDown,事件,在,SelectTool.cs,类文件中重写该事件,。代码如下。,19,2025/7/15 周二,3.,使用,Add-In,进行桌面软件开发,7,),点击该工具,在地图窗口中绘制多边形,多边形范围内的要素将被选中,。,6,)调试程序,添加,Add-In,工具,20,2025/7/15 周二,3.,使用,Add-In,进行桌面软件开发,Add-In,的安装部署,采用,Add-In,方式开发完成之后,需要将程序部署到用户机器中,方能正常使用该功能。,ArcGIS 10.0,不仅提供了,Add-In,的部署工具,也提供了,Add-In,的管理工具。,Add-In,程序的部署可以采用两种方式进行。,一种是直接双击要部署的,SampleArcMapAddin.esriAddIn,文件,。,另一种部署方式是在打开,ArcMap,之后,在界面主菜单中,操作。,21,2025/7/15 周二,4.,使用,ArcGIS Engine,构建独立应用程序,对于大型、专业的,GIS,应用系统来讲,由于功能的复杂性和软件版权保护等原因,往往需要所包含的,GIS,功能能够脱离,ArcGIS,平台软件独立运行,这就需要使用,ArcGIS Engine,进行开发。,本节通过一个简单的实例,来讲解如何应用,ArcGIS Engine,所提供的控件来构建一个,GIS,系统的基本流程与步骤。,22,2025/7/15 周二,4.,使用,ArcGIS Engine,构建独立应用程序,1,),启动,Visual Studio 2010,,,创建,Sample,工程,2,),选择需要添加的,ArcGIS,引用项,,,在【,License Checking,】选项页中选择需要的软件许可授权和扩展模块许可授权,。,23,2025/7/15 周二,3.,使用,ArcGIS Engine,构建独立应用程序,3,),在【工具箱】面板中找到【,ArcGIS Windows Forms,】选项卡,此选项卡中包含有,ArcGIS Engine,中所有的可视化控件,选择需要的控件添加到【,Sample,】窗体中。,24,2025/7/15 周二,4.,使用,ArcGIS Engine,构建独立应用程序,4,),ToolbarControl,控件通用属性选项,ToolbarControl,控件添加工具属性页,ToolbarControl,可添加的工具按钮,25,2025/7/15 周二,4.,使用,ArcGIS Engine,构建独立应用程序,5,),选中,TOCControl,控件,单击鼠标右键,选择【属性】,弹出对话框,在【,General,】选项卡的“,Buddy,”下拉列表中选择与其绑定的,MapControl,地图控件,这样当程序运行时,TOCControl,控件才可以与地图控件进行联动。,要对,TOCControl,控件和,ToolbarControl,控件进行地图控件的绑定,除了使用上述方法通过属性选项进行设置外,还可以通过程序代码实现,26,2025/7/15 周二,4.,使用,ArcGIS Engine,构建独立应用程序,6,),选中,MapControl,控件,单击鼠标右键,选择【属性】,弹出对话框,在对话框中选择程序运行时加载的,*.mxd,地图文档,点击【确定】按钮完成对,*.mxd,文档的关联。,7,),按【,F5,】键启动程序调试,地图文档被自动加载到程序中,工具条中的工具可以实现放大、缩小、平移、查询等操作,。,27,2025/7/15 周二,5.,不同开发方式的比较,VBA,方式采用,Visual Basic,语言规范,作为,Visual Basic,的子集,简单易学,开发者只需关注自己需要而,ArcGIS,没有直接提供的功能。,DLL,方式扩展了鼠标交互等界面操作功能,可以构建规模稍大的应用系统。这种开发方式在分发软件的时候只需要提供,DLL,文件,经过注册即可在,ArcGIS Desktop,中使用,比,VBA,的部署方式灵活很多。,Add-In,方式是,Esri,最近大力推广的一种轻量级开发方式,它提供了更多的扩展类型,更容易创建和分发,,ArcGIS,又提供了许多可以利用的模板,使得这一开发方式越来越受青睐,这也是替代,VBA,方式和,DLL,方式的一项更好的选择。,左侧,三种开发方式的共同点是开发的程序必须在,ArcGIS,桌面软件上运行。,目前最常用的开发方式还是基于,ArcGIS Engine,的开发方式。它的优点是可以构建独立运行和部署的,GIS/,非,GIS,应用程序,既可以充分利用,GIS,开发控件和组件所提供的空间数据管理和分析等专业,GIS,功能,又可以充分利用可视化开发语言在非,GIS,应用开发中的高效、方便等优点,。,28,2025/7/15 周二,
展开阅读全文