一、定制开发概述
1、定制开发的概念
定制开发是基于ArcGIS Desktop软件,利用ArcObject提供的类库模块运行开发的方法,定制开发具有以下特点:
(1)适合于开发重复使用的工具型功能模块;
(2)无需进行过多的界面设计
(3)开发周期较短,比较灵活;
(4)不能脱离ArcGIS Desktop软件的支持。
2、定制开发的方式
(1)VBA定制开发
(2)Add-in开发
(3)DLL开发
(4)Pytjon窗口开发
3、VBA语言
VBA(Visual Basic Application)是微软公司以Basic语言为基础,为各种应用软件(如Word、Excel、ArcGIS Desktop等)开发的一种定制开发语言。
VBA提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA程序代码。
ArcGIS Desktop需要安装VBACompatibility软件才能使用VBA开发环境。
4、模板与文档
地图模板(Map Templete)是新建地图文档的参考基准性文档模板文件,它是建立地图文档的起点,如ArcGIS软件的地图模板是以“.mxt”后缀的文件,它保存了默认地图文档信息,默认界面设置信息,VBA代码等。地图模板类似于微软件的Word模板文件。
所有的桌面应用程序都有一个众所周知的模板Normal模板(如ArcMap软件使用模板Normal.mxt)
地图文档(Map Document)是基于地图模板的地图文件,保存了当前地图内容信息,空间参考信息、当前界面设置信息、VBA代码等。如ArcMap软件的地图文档是以“.mxd”后缀的文件。地图文档类似于微软件中的Word文档(.doc)文件,用户若是没有建立地图文档,ArcMap软件会按照Normal模板中的信息创建空白的地图文档(Untitiled.mxd)
操作一个桌面系统文档时,对应的桌面应用程序首先从Normal模板中读取自定义信息,接下来读取用户地图模板,最后再读取用户地图文档本身。
二、BA编程环境
VBA编程环境中应用程序的组织方式也与VB6.0类似,最大的单位就工程,一个工程中可以包括多个表单(窗体)、模块和类。工程浏览器窗口显示两个或多个工程,通常ArcGIS Desktop中会自动包含Normal工程和当前文档工程。
Normal工程指的是应用程序相关的Normal模板。如果在此工程中编写宏,这些宏将被保存到Normal模板,并因此对应用程序的所有文档可用。如果在该当前文档工程内编写宏,代码只在该当前文档中可用。如果在操作一个地图模板,可能会显示第三个工程。保存到模板工程的任何代码将对基于该模板的所有文档可用。
ArcID模块
每个VBA工程包含一个称为ArcID的自动添加模块,此模块储存在Normal模板,包含一个对当前应用程序中所有已有控件(命令,工具等)的引用。利用该信息,用户可以在自己的代码中共调用或运行一个已有的工具。
保存工程
VBA工程可以保存在一个基础模板(.mxt)、Normal模板或者一个地图文档(.mxd)中。当用户从基础模板创建一个新的ArcMap文档时,新的文档会引用基础模板的VBA工程及其项目。要保存ArcMap文档和VBA工程,从ArcMap File菜单中单击SAVE,或VBA的File菜单中单击Save<File
Name>。每个命令都保存工程和保存在里面的项目。文件被保存后,文件名被显示在Project Explorer中工程名后的圆括号里。为了保存文档为一个模板,从菜单ArcMap File中单击save as 并指定ArcMap Templates(.mxt)为文件类型。
环境设置
公共变量
在ArcGIS Desktop应用程序中,用户有两个预先设置的变量,这两个变量作为更多用户代码的起点,它们是Application和ThisDocument。这些对象变量在用户一启动桌面应用程序就可用。尽管这些变量中可用的方法和属性的数量相当有限,但是获得其他编程对象(如maps,layers和files)的跳板。
Application是一个预先设置的变量,它指向当前的应用程序。在ArcMap中,Application是指ArcMap应用程序,在ArcCatalog中,它是指ArcCatalog等,在任何环境中,Application变量通常有相同的方法和属性。
ThisDocument为一个预先设置的变量,它指向应用程序当前打开的文档。在ArcCatalog中,该变量通常指Normal模板,但在其他桌面应用程序中,是指当前的mapDocument、sceneDocument和globeDocument文档,不像Application预置变量,ArcCatalog的ThisDocument中的方法和属性与其他桌面应用程序有一些不同之处。
1、创建VBA宏
1、ArcMap桌面定制
ArcGIS Desktop可对界面进行定制设置,比如创建工具条、菜单、管理命令和工具等。
2、VBA定制开发的方式
ArcGIS Desktop中进行VBA定制开发的方式有两种:
(1)编写VBA宏命令
(2)创建UIControl工具
3、什么是VBA
VBA宏是指为实现特定的功能而编写的一段可运行的VBA代码,就称为宏。
VBA宏自动保存在Module模块中,创建好之后可以打开已经存在的宏进行编辑。
创建的VBA宏可以在VBA编程环境中运行VBA宏,也可以在ArcMap界面上定制VBA宏按钮。
4、视图缩放宏
创建缩放宏的过程:
操作方法:在“Tools”菜单中,选择“Macros”菜单中的“Macros”子菜单。在“Marcros”对话框中,输入“MyZoomIn”作为名称,点击“Create”创建一个宏。
2、图层遍历宏与图形定位宏
1、图层遍历宏
IMxDocument接口
IMap接口
ILayer接口
2、图形定位宏
基本思路:
(1)首先获得当前地图文档对象ThisDocument;
(2)利用该地图文档的当前视图对象属性,可获得当前显示的地图对象;
(3)利用好该地图对象的Layers属性,对每个地图对象进行遍历。查找名称为“wind”的图层
(4)图层对象具有FeatureClass属性。
(5)FeatureClass对象具有Search方法,获得图形的游标集;
(6)对图形的游标集每个图层对象进行遍历,获得每一个图形对象(Feature),这个例子是点图形。
(7)图形对象具有shape属性,它是IGeometry类型的;
(8)shape属性可以转成IPoint类型的变量
(9)IPoint类型的变量具有XY坐标属性;
(10)利用点的XY坐标,创建一个指定长度和宽度的矩形框(Envelope对象),这个例子创建的是以点为中心,边长为2的正方形框。
(11)Envelope对象具有CenterAt方法,可以把中心位置定位到指定的点处。
(12)把当前视图的显示范围设置为创建好的Envelope对象;
(13)刷新地图就完成了定位功能
(14)延迟0.5s,循环定位到下一个点。
未完待续~
以上为博主自己在学习过程中的学习笔记,用于学习和交流,欢迎大家批评纠正。
希望你越来越优秀!!