ArcGIS Engine开发教程--定制开发方法

一、定制开发概述

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,循环定位到下一个点。

未完待续~


以上为博主自己在学习过程中的学习笔记,用于学习和交流,欢迎大家批评纠正。

希望你越来越优秀!!

arcgis开发教程,ao开发教程,arcobjects开发教程,arcgis objects开发教程,arcgis桌面开发教程,AE开发教程Arcgis Engine开发教程 1.3. GeoDataBase 34 1.3.1. 如何加载Shape文件 34 1.3.2. 如何在ArcMap中加入Text和dBASE文件 35 1.3.3. 如何连接GeoDataBase文件 37 1.3.4. 如何连接Coverage文件 39 1.3.5. 如何连接栅格文件 41 1.3.6. 如何创建Shape文件 42 1.3.7. 如何创建DBF文件 45 1.3.8. 如何创建GeoDataBase文件 47 1.3.9. 如何创建Coverage文件 48 1.3.10. 如何建立文件连接(Join / Link) 50 1.3.11. 如何浏览纪录(属性查询) 52 1.3.12. 如何编辑记录 53 1.3.13. 如何增加记录 54 1.3.14. 如何删除记录 56 1.3.15. 如何纪录排序(ITableSort) 58 1.3.16. 如何添加字段 59 1.3.17. 如何删除字段 61 1.3.18. 如何进行空间查询 62 1.3.19. 如何进行高级空间查询(两个层之间的空间查询) 64 1.3.20. 如何进行层与层之间的逻辑运算 65 1.3.21. 如何将shape文件转化成GeoDataBase(各种文件格式的转换) 67 1.3.22. 如何将Map中显示的图形转化成栅格文件 70 1.3.23. 如何打开选中的层或独立表的属性窗口 71 1.3.24. 如何拷贝属性表中的一行 73 1.3.25. 如何为当前层或独立表创建一个Summary表 75 1.3.26. 如何利用用户定义的规则创建定制的排序 78 1.3.27. 如何实现在ArcMap上进行属性查询(Identify) 84 1.3.28. 如何设置和修改层的数据源 87 1.4. Display 88 1.4.1. 如何实现在ArcMap中放大缩小地图 88 1.4.2. 如何实现在ArcMap中移动地图 90 1.4.3. 如何实现在ArcMap上画Polygon 92 1.4.4. 如何实现在ArcMap上进行测量 94 1.4.5. 如何实现在ArcMap上选取中记录 100 1.4.6. 如何实现在ArcMap中进行动作的撤销和重做 101 1.4.7. 如何画Polygon Buffers 102 1.5. 图元编辑 104 1.5.1. 如何得到图形的基本属性 104 1.5.2. 如何将选中的点集转换成Polygon 105 1.5.3. 如何将Multipoint转换成Points 109 1.5.4. 如何通过Polygon中的多个Ring创建多个Polygon 111 1.5.5. 如何从Polyline创建Polygon 113 1.5.6. 如何从Polygon创建Polyline 115 1.5.7. 如何将Polygon/PolyCurve一般化(Generalize) 117 1.5.8. 如何获得Polygon的中点 119 1.5.9. 如何判断图形间的逻辑运算 121 1.5.10. 如何进行图形间的逻辑运算 124 1.5.11. 如何创建Envelope的Boundary 127 1.5.12. 如何通过鼠标移动图形 130 1.5.13. 如何为一个图形添加一个顶点 133 1.5.14. 如何删除一个图形上的一个顶点 136 1.5.15. 如何移动一个图形上的一个顶点 138 1.6. Element 141 1.6.1. 如何创建MarkerElement 141 1.6.2. 如何创建TextElement 142 1.6.3. 如何创建Balloon Callout 144 1.6.4. 如何创建PolygonElement 145 1.6.5. 如何选中一个Element 146 1.6.6. 如何移动Element 147 1.6.7. 如何排列Element 151 1.6.8. 如何通过名字查询Element 153 1.6.9. 如何拷贝Element 155 1.6.10. 如何沿着折线路径显示Text 158 1.7. Symbol和Renderer 159 1.7.1. 如何为一个层设置Simple Renderer 159 1.7.2. 如何为一个层设置UniqueValue Renderer 161 1.7.3. 如何为一个层设置ClassBreaks Renderer 165 1.7.4. 如何为一个层设置ProportionalSymbol Renderer 168 1.7.5. 如何为一个层设置Chart Renderer 170 1.7.6. 如何为一个层设置DotDensity Renderer 173 1.8. Layout和打印 175 1.8.1. 如何在Page Layout上添加Text 175 1.8.2. 如何在Page Layout上添加Legend 176 1.8.3. 如何在Page Layout上添加North Arrow 179 1.8.4. 如何在Page Layout上添加Scale bar 180 1.8.5. 如何在Page Layout上添加Scale Text 182 1.8.6. 如何在Page Layout上添加Picture 184 1.8.7. 如何创建、删除地图网格(Map Grid) 185 1.8.8. 如何设置Layout中MapFrame的外观风格属性 187 1.8.9. 何设置Layout中Page的边框(Border)和背景(Background) 189 1.8.10. 如何设置打印纸张的大小和方向 192 1.9. 坐标系统 193 1.9.1. 如何在ArcMap中设置地理坐标系和投影坐标系 193 1.9.2. 如何修改层的坐标系统 194 1.9.3. 如何把Polygon的顶点从经纬度坐标转换到平面直角坐标 196 1.10. ArcGis相关文件 198 1.10.1. 如何夹载grf文件 198 1.10.2. 如何新建指向Shape文件的lyr文件 199 1.10.3. 如何新建指向GeoDataBase文件的lyr文件 200 1.10.4. 如何加载mxd文件 202 1.10.5. 如何加载Apr文件(ArcView32) 203 1.10.6. 如何加载lyr文件 204 1.10.7. lyr文件的属性的设置 205 1.11. 其他 208 1.11.1. 如何创建简单的Column Chart 208 1.11.2. 如何将数据输出到Excel 209 1.11.3. 如何把Labels转换为Annotation 211 1.11.4. 如何把Annotation转换为Polygon Features 215 1.11.5. 如何设置Featurelayer的Label 218 1.11.6. 如何设置图层显示的透明度 220 1.11.7. 如何过滤层中要显示的Features 220 1.11.8. 如何在MapControl中新建一个Document并且保存 221
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DXM0521

你的支持是我最大的幸运

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值