【ArcGIS Pro SDK for .Net】Add-in插件开发教程

一、开发环境

在进行ArcGIS Pro Add-in插件开发之前,确保电脑安装以下依赖

  • Visual Studio 2019
  • ArcGIS Pro 2.5
  • .Net Framework 4.8

Visual Stuido中安装 Extension

  • ArcGIS Pro SDK for .Net

【ArcGIS Pro SDK for .Net】Add-in插件开发教程

二、Add-in结构

1. 创建模板

新建ArcGI Pro Module Add-in模板

关于不同模板的解释参考 Learn ArcGIS Pro SDK

2. 控件级别

Tab
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
Group
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
Menu
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
Control
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
控件结构关系
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
Daml结构
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
需要在父控件中添加子控件,子控件必须添加id属性

3. 主题样式

ArcGIS Pro提供黑白两种主题和大小图标样式,所以Add-In插件也必须提供两种样式的图标

小图标: 16x16px的png格式栅格图片
大图标: 32x32px的png格式栅格图片

使用方式(默认为白色主题)
【ArcGIS Pro SDK for .Net】Add-in插件开发教程

4. 创建Module

新建一个Add-in项目后会自动创建Module,这部分代码可以不改变

【ArcGIS Pro SDK for .Net】Add-in插件开发教程
【ArcGIS Pro SDK for .Net】Add-in插件开发教程

三、Add-in安装

添加一个Button标签, 并在Group中引用该Button, 修改Config.daml代码如下
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
新建AddDataButton.cs类,继承自Pro SDK的button
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
编译项目
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
在项目的bin目录下会生成一个.esriAddinX的文件,双击进行安装
【ArcGIS Pro SDK for .Net】Add-in插件开发教程
重启ArcGIS Pro, 就可以发现插件
【ArcGIS Pro SDK for .Net】Add-in插件开发教程

四、简单Demo

上面我们已经添加了Add multi data控件,接下来就要在AddDataButton.cs类里面写逻辑代码

查看Button的定义,有三个重要点

  • IsChecked, 该button是否被勾选(Pro中button类似Checkbox效果)
  • OnClick, 点击button时的逻辑
  • OnUpdate, Pro更新时的逻辑

1. Layer的增删改查

1. OperationalLayer

添加Layer

  1. 获取此项目的Scene
  2. 创建使用LayerFactory创建Layer并将其加到Scene容器中

删除Layer

提供删除某个或多个Layer的方法

查询Layer

每个Layer都有一个独一无二URI,以此区分不同Layer。
可以查询Layer的Name,范围大小,可见性等属性

修改Layer

Layer的属性都为只读,只提供修改Name,是否展示Popup以及数据连接方式的方法

2. Basemaps和ElevationSource

Pro中BasemapsElevationSource不能向OperationalLayer通过容器的方式添加,
Map类中提供了两个方式添加

Map.SetBasemapLayers()
Map.SetElevationSurface()

Basemap的创建方式

  1. SDK内置多种Basemap样式
  2. 从其他Item获取来的,如PortalItem等

ElevationSource的创建方式

  1. FromJson
  2. FromXml

其他删除、修改和查询与OperationalLayer相似
暂不支持多数据源构造Basemap

2. Demo

Layer的增删改查Demo

ArcGISProSDKDemo

五、参考资源