【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比


对于桌面GIS应用来说,ArcGIS平台不仅提供了用于开发独立运行的GIS应用软件的二次开发工包ArcGIS Engine,还提供了对ArcGIS Deskop桌面软件进行扩展的开发的话,在开发个具体的GIS 行业应用软件时,程序员应该根据系统规权用户水平和其体应用环境等设计相应的系统架构,从而决定是采用C/S还是B/S架构。如果采用C/S架构,是开发一个独立的系统还是在现有的ArcGIS桌面软件上进行扩展。因此,选择合适的开发方式是进行GIS软件设计的第一步。特别需要注意的是,并不是所有的GIS应用系统都一定要基于ArcGIS Enine开发。

2.1 使用VBA进行桌面软件开发

VBA(Visual Basic for Applications)可理解为简化的Visual Basic语言,它是VisualBasic 语言的子集,主要用于对支持VBA的Windows程序(称为“宿主程序")进行扩展和定制。微软公司的Word、Excel等Office办公套件很早就集成了VBA语言,利用它可以进一步扩充这些宿主程序的功能,或者基于这些宿主程序开发较为复杂的应用系统。Visual Basic开发的系统可以脱离Visual Basic而运行,但是基于VBA开发的系统不能脱离宿主软件运行,它的代码存储在宿主程序的文档中,如对Word进行VBA定制和开发的代码存储在*.doc文件中,对ArcMap进行扩展的代码存储于. .mxd地图文档中。

使用VBA进行系统扩展是一种轻量级的软件开发模式。 Esri目前不特别推荐使用VBA进行系统开发,而更侧重于推荐使用Python语言进行扩展。但在很多情况下,特别是一些业务模式相对固定的生产和管理部门,并不需要复杂的GIS分析功能,而是更侧重于地理数据的管理,并且这些用户基本掌握了ArcGIS软件的使用,通过VBA开发方式将一系列业务管理流程自动化为工具按钮置于ArcGIS桌面软件中,既能满足行业管理的需求,又能充分利用ArcGIS本身强大的空间数据管理功能,这时使用VBA开发定制无疑是种较好的方式。

2.1.1 VBA开发方式

通过VBA开发环境进行ArcGIS桌面软件的扩展和定制是最简单的GIS软件开发方式,开发者只需专注于ArGIS软件不能提供的功能,对于ArcGIS软件已经提供的工具,直接拿过来可以使用。

ArcGIS Desktop默认是没有安装VBA开发环境的,需要手动安装安装包中的VBACompatibility,如下图所示,点击setup.exe,一路完成即可。安装完VBA之后,就可以在ArcMap的自定义菜单下看到macro了。

在这里插入图片描述

1. 宏命令方式

在这里插入图片描述
将那些能够自动执行某种操作的命令统称为宏(Macros),是一种操作命令。

宏命令对话框如下:

在这里插入图片描述
VBA程序实现界面如下:

在这里插入图片描述

2. UIControl方式

在这里插入图片描述

2.1.1 VBA代码的安全性

VBA代码保存在文档或者模板中,开发人员编写的代码很容易被别人使用。为了保护,可以设置VBA密码,增加安全性。

2.2 使用DLL进行桌面软件开发

DLL(动态链接库)是Windows 平台下的一种类文件编译格式,这种格式的文件可以被任何支持COM规则的语言所支持和引用,ArcObjects组件本身的物理文件就是DLL文件。DLL开发方式的特点是开发环境脱离了ArcGIS Desktop软件,读者可以使用自己熟悉的开发语言,如Java、C#等语言进行开发;开发的功能可以更为强大和灵活;编译的结果是DLL文件,封装性更好,功能分发只需传递DLL文件即可。后期维护也只需要更新相应的DLL文件即可,而不需要对源程序做任何修改。

2.2.1 DLL开发方式

在这里插入图片描述
选择命名空间引用。

在这里插入图片描述
以新建一个工具为例,在项目名称上右键→添加→新建项。

在这里插入图片描述
由于我们开发的工具实际上是对已有的工具进行调用和扩充,因此选择第二项ArcMap,MapControl,or PageLyaoutControl Tool

在这里插入图片描述

2.2.2 DLL功能的应用部署

2.3 使用Add-in进行桌面软件开发

1. addin介绍

ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作。相对于以往9.x系列,addin的无论是从使用或者编写都更加方便快捷。通过开发语言,可以制作ArcGIS Desktop各个软件模块的插件。

ArcGIS Add-In插件开发是对ArcGIS Desktop应用软件的功能扩充,ArcGIS Desktop 本身就是一个插件式框架,可以允许用户根据自己的需求定制开发扩充功能,开发的功能主要是置于工具栏上。

2. addin开发方式

ArcGIS Add-In插件开发有两大类型,如下:

  • 一是Python Add-In开发,但是需要从ESRI官网上下载Python加载项向导才能进行。。

  • 二是基于Arc0bject/ArcGIS Engine的Add-In开发,又分command、tool、toolbar、Dockable Window开发。

(1)Python Add-In开发

Esri提供了Python加载项向导工具来实现Addin界面的搭建,可以到Esri官网去下载该工具Python加载项向导 。从介绍来看,该设计器要求的最低ArcGIS版本为10.1 ,如下图所示:

在这里插入图片描述

插件下载地址:https://www.arcgis.com/home/item.html?id=5f3aefe77f6b4f61ad3e4c62f30bff3b

双击安装包中的addin_assistant.exe,即可。

在这里插入图片描述
在这里插入图片描述
(2)基于ArcObject/ArcGIS Engine的Add-In开发

2.4 使用ArcGIS Engine构建独立应用程序

对大型、专业的GIS应用系统来讲,由于功能的复杂性和软件版本保护等原因,往往需要所包含的GIS功能脱离ArcGIS平台软件独立运行,这就需要使用AE开发。

例1 :

打开VS2010,新建项目。

在这里插入图片描述
选择需要添加的引用项,点击Next。

在这里插入图片描述
勾选需要的软件许可和扩展模块,点击Finish。

在这里插入图片描述
从工箱中添加ToolbarControl、TOCControl和MapControl,简单的界面构造如下(如果想要更优美的界面,可以借助DevExpress插件来构造个性化的界面):

在这里插入图片描述
ToolbarControl属性设置如下:

在这里插入图片描述
TOCControl属性设置如下:

在这里插入图片描述
MapControl属性设置如下:

在这里插入图片描述
运行程序,点击Add Data按钮加载一个栅格数,如下图所示。

在这里插入图片描述
例2:

在这里插入图片描述

private void button1_Click(object sender, EventArgs e)
{
      string sPath = Application.StartupPath + "\\world.mxd";
      if (axMapControl1.CheckMxFile(sPath))
      {
           axMapControl1.LoadMxFile(sPath);
      }
}

在这里插入图片描述

刘一哥GIS CSDN认证博客专家 博客专家 GIS讲师 GIS工程师
刘一哥,多年研究地图学、地理信息系统、遥感、摄影测量和GPS等应用,精通ArcGIS、MapGIS、ENVI、Erdas、CASS、Pix4d、CC、PhotoScan、Inpho、EPS、Globalmapper等专业软件的应用,精通多门编程语言,擅长GIS二次开发和数据库系统开发,具有丰富的行业经验,致力于测绘、地信、国土、资源、环境、生态、空间规划、无人机等领域深度应用。
已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 59.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值