基于ArcGIS Pro SDK的开发定制

余生长醉 提交于 2021-02-02 11:56:13

1.环境搭建

1.1软件

        Visual studio 2017或2019

        NET Framework 4.6.1+

        ArcGIS Pro 2.5

1.2环境搭建

1)打开Visual studio

2)进入工具->扩展与更新

 

3)进入联网选项栏,搜索ArcGIS Pro SDK,在搜索结果中找到ArcGIS Pro SDK    for .NET,点击下载。

 

4)下载完成后,关闭Visual Studio,会弹出安装窗口

 

5)等待安装结束后,既环境搭建完成。

 

2. 使用ArcGIS Pro SDK开发

2.1创建第一个Pro Addin程序

1)打开Visual Studio,新建项目选择ArcGIS Pro模块加载项,点击确定

 

2)创建完工程后结构如下,其中Config.daml用于编辑界面

 

 

3)右键项目,添加->新建项。可以添加控件。例如我们添加ArcGIS Pro按钮

 

4)点击添加后Config.daml内容中会自动添加一个button控件,项目中也会添加Button1.cs文件。

 

5)在Button.cs中实现点击Button的效果。

 

6)启动项目,进入ArcGIS Pro会看到我们添加的Addin和Button。点击Buton按钮就可以实现写入的功能。

 

 

 

2.2界面配置(Config.daml)

2.2.1 Module

        声明一个新模块,所有组成插件声明包含在insertModule元素是隐式插入。

        模块内的控件可以被多个引用,而不需要别重复定义,和框架分离。

2.2.2 Tab

       Tab是界面中的选项卡,一个模块中可以有多个Tab,同时Tab通过refID可关联多个Group。

 

 

2.2.3 group

          group是控件的分组,一个group中通过refID关联多个控件。

2.2.4 Controls

          在Controls中定义控件。控件中id都是唯一的。通过Control的id及group的refID,可以实现group与Control多对多的关系。

2.3 类库

2.3.1 核心组件

集合

描述

ArcGIS.Core.dll

提供CIM,空间数据库,空间图形和设施网络等API

ArcGIS.CoreHost.dll

提供独立初始化ArcGIS.Core.dll

ArcGIS.Desktop.Framework.dll

提供程序框架

2.3.2 扩展组件

集合

描述

ArcGIS.Desktop.Catalog.dl

项目project content items  包括,map items, layout items, style items, folder items 等

ArcGIS.Desktop.Core.dll

创建和管理Project项目,获取相关事件,执行GP工具。

ArcGIS.Desktop.DataReviewer.dll

要用过做数据检查。

ArcGIS.Desktop.Editing.dll

提供图形编辑的类库。

ArcGIS.Desktop.Extensions.dll

提供对Pro 中定义的类扩展的方法。

ArcGIS.Desktop.Geoprocessing.dll

主要的GP工具

ArcGIS.Desktop.Layouts.dll

提供了地图的布局和导出图片的各种方式

ArcGIS.Desktop.Mapping.dll

提供了创建地图,图层的方法,查询,可视化二三维地图。也可以创建栅格图层。

2.3.3 非公共API的扩展组件

目前仅Esri内部使用,包含3D分析、图表、空间统计、网络分析(设置,网络图,传输)、发布服务…等功能

2.4 ArcGIS Pro中的地图

2.4.1 MapView

在ArcGIS Pro的工程中可以包含多个二维或三维地图即多个MapView。MapView在二维或者三维视图中提供图层显示,要素选择、查询、编辑。

1. 可以通过MapView.Active获取当前激活状态的MapView。通过Camera调整地图视角。

地图视角查看事例如下:

        public void RotateView(double heading)

        {

                 var mapView = MapView.Active;

                 if (mapView == null)

                         return;

        var camera = mapView.Camera;

                 camera.Heading = heading;

                 mapView.ZoomToAsync(camera, TimeSpan.Zero);

        }

2. MapView有二维或三维全球(SceneGlobal)、三维本地(SceneLocal)状态。

获取MapView状态事例如下:

        public bool IsView3D()

        {

                         var mapView = MapView.Active;

                         if (mapView == null)

                                  return false;

                  return mapView.ViewingMode == ArcGIS.Core.CIM.MapViewingMode.SceneLocal || mapView.ViewingMode == ArcGIS.Core.CIM.MapViewingMode.SceneGlobal;

         }

 

附录

       欢迎大家关注我的收费课程《ArcGIS Pro 2.6和ArcGIS Enterprise学习》,共8小时,有理论有实操:https://edu.csdn.net/course/detail/31690

课程主要包含:

  1. ArcGIS Pro2.6学习

                    ①GIS中的数据

                    ②GIS中的坐标系

                    ③企业级地理数据库(SDE)设置

                    ④数据编辑及拓扑检查

                    ⑤简单制图

                   ⑥空间分析

     2.ArcGIS Enterprise学习

                  ①环境部署

                  ②二三维服务发布(矢量切片、要素服务、地图切片、地形服务、三维服务等)

                  ③使用及运维(详细介绍如何确定enterprise部署架构,简单介绍相应的运维工具)

      3.开发体系梳理

 

参考:

https://pro.arcgis.com/zh-cn/pro-app/sdk/

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!