【转载】ArcGIS Add-In开发入门及实例开发

0 写在前面

Arcgis 10的版本之后,ESRI公司推出了很方便的Add-In插件式开发,是一种能够快速扩展桌面应用程序功能的全新扩展方式。作为ArcGIS 10中全新定制方法,它有以下特点

  • 容易创建:ArcGIS提供了很多创建Add-In模板,并提供了详细的接口以实现各种功能。
  • 更易共享:Add-In本质上是一个Zip压缩文件这个压缩文件里面包含了,易于网络、邮件传输、易于局域网内共享。
  • 更加安全:可以对Add-In文件进行数字签名,使用的安全性得到保障。
  • 更易安装管理:只要安装有桌面软件,系统就能自动识别Add-In文件,双击即可安装部署,同时desktop也有用于管理Add-In的管理工具。

ArcGIS Add-In支持的类型包括:

  • 按钮和工具
  • 组合框
  • 菜单和右键菜单
  • Multi-items
  • 工具条
  • Tool palettes
  • 可停靠窗体
  • Application extensions
  • Editor extensions

1 开发环境

Microsoft .Net Framework 4
ArcObjects SDKs for Microsoft .Net Framework 10.2
Visual Studio 2012
Win 10 64bit

Microsoft .Net Framework 4可以在微软官网下载,依据提示按部就班安装。

Visual Studio 2012安装和破解可以参考博客VS2012安装介绍

Add-In开发实际依赖于ArcObjects,在开发之前请确保正确安装了ArcObjects SDKs
ArcObjects SDKs安装可以启动ArcGISArcGIS Server安装包下的Esri.exe程序,在出现的安装界面上选择安装ArcObjects SDKs的类型。由于选用C#语言开发,选择安装ArcObjects SDKs for Microsoft .Net Framework
在这里插入图片描述

2 Add-In开发

本文以一个简易功能按钮Add-In开发为实例,详细说明Add-In开发流程。
该按钮的主要功能为,打开一个指定的文件夹,并从中浏览加载shp格式文件。

STEP 1:新建项目

打开VS 2012,点击文件-新建-项目,在弹出的面板中选择.NET Framework 4Add-In类型选择Visual C#。可以修改项目名称及其保存位置。
在这里插入图片描述
可以修改Add-In的名字。
在这里插入图片描述
修改Add-In类别为Button,修改类名为AddShp,可以修改该工具的提示框及描述。完成新建项目。
在这里插入图片描述

STEP 2:编码开发

新建项目后,生成的项目结构如下,编码开发主要在AddShp.cs中完成。AddShp.cs中默认生成的代码如下。
在这里插入图片描述在这里插入图片描述
AddShp.cs中添加添加依赖及功能代码,代码如下。
相比于默认代码,该代码主要重写了OnClick函数。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

using System.Windows.Forms;
using ESRI.ArcGIS.ArcMapUI;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;

using ESRI.ArcGIS.Display;

namespace ArcMapAddin1
{
    public class AddShp : ESRI.ArcGIS.Desktop.AddIns.Button
    {
        IMxDocument pMxd;
        public AddShp()
        {
            pMxd = ArcMap.Document as IMxDocument;
        }

        protected override void OnClick()
        {
            System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog();
            openFileDialog.Filter = "shp(*.shp)|*.shp";
            openFileDialog.InitialDirectory = @"D:\extent\";

            openFileDialog.Multiselect = false;
            DialogResult pDialogResult = openFileDialog.ShowDialog();
            if (pDialogResult != DialogResult.OK)
            {
                return;
            }
            string pPath = openFileDialog.FileName;
            string pFolder = System.IO.Path.GetDirectoryName(pPath);
            string pFileName = System.IO.Path.GetFileName(pPath);

            IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
            IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pFolder, 0);
            IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
            IFeatureClass pFC = pFeatureWorkspace.OpenFeatureClass(pFileName);
            IFeatureLayer pFLayer = new FeatureLayerClass();
            pFLayer.FeatureClass = pFC;
            pFLayer.Name = pFC.AliasName;
            ILayer pLayer = pFLayer as ILayer;
            IMap pMap = pMxd.FocusMap;
            pMap.AddLayer(pLayer);

            //
            //  TODO: Sample code showing how to access button host
            //
            ArcMap.Application.CurrentTool = null;
        }
        protected override void OnUpdate()
        {
            Enabled = pMxd.FocusMap.LayerCount >= 0;
        }
    }

}

注意:添加依赖以后,会出现类似命名空间ESRI.ArcGIS不存在类型或命名空间***。是否缺少程序集引用?的情况,遇到这个问题可以通过右键项目结构中的引用-添加引用,把相应的程序集添加至项目中即可。
在这里插入图片描述
在这里插入图片描述注意:代码中提示无法嵌入互操作类型ESRI.ArcGIS.Carto.FeatureLayerClass,请改用适用的接口,需要在项目目录中的引用菜单下找到相应的依赖,并且修改其嵌入互操作类型属性为False
在这里插入图片描述

STEP 3:代码编译

代码开发完毕以后,右键单击项目,选择生成,代码编译并在项目保存位置下生成esriAddIn文件。esriAddIn文件具体路径为项目保存位置/ArcMapAddin4/bin/Debug
在这里插入图片描述

3 Add-In安装及卸载

安装使用Add-In需要两步:

  1. 安装Add-In:双击esriAddIn文件,在弹出窗口点击Install Add-In即可安装。
  2. ArcMap中添加Add-In:在ArcMap自定义-自定义模式下将Add-In拖拽至默认的工具条上或者自定义的工具条。

在这里插入图片描述在这里插入图片描述
想要删除Add-In,只需打开ArcMap自定义-加载项管理器,将加载的Add-In删除即可。
在这里插入图片描述

4 参考

https://www.bbsmax.com/A/l1dyeLebde/

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值