ArcGIS Pro Add-Ins&Configurations开发系列1-安装配置

ArcGIS Pro Add-Ins&Configurations开发系列1-安装配置

一.安装ArcGIS Pro拓展

要想进行ArcGIS Pro的Add-Ins或Configurations开发,需要先安装ArcGIS Pro拓展,能方便的创建ArcGIS相关的项目模板。笔者安装的ArcGIS Pro是2.8版本的,对应的拓展需要vs2017或vs2019和.Net Framework 4.8。如果是vs2022,2.8版本的拓展无法适配,只有3.0以上版本的拓展才可以。

现在ArcGIS Pro已经有3.0版本了,但是公司要求使用2.8版本进行开发,所以笔者使用了vs2019。而vs2019在管理拓展中搜索出来的ArcGIS Pro拓展是默认2.9版本的,不符合我们的需求。

image-20230118094346132

因此需要去到github上寻找以前版本的SDK拓展,在这个网址Home · Esri/arcgis-pro-sdk Wiki · GitHub上可以下载到我们需要的拓展。

image-20230118095241769image-20230118095456719

二.创建项目

双击下载下来的两个vsix文件,即可安装。安装完成后打开vs2019,选择创建新项目,在第三个搜索项里选择ArcGIS Pro SDK,就可以看到拓展给我们提供的一些项目模板。

image-20230118100054877

其中ArcGIS Pro 模块加载项就是Add-InsArcGIS Pro 管理配置就是Configurations。这里我们选择ArcGIS Pro 管理配置开发,原因是Configurations开发更加灵活,相较于Add-Ins开发,有额外的机会去配置和拓展程序,比如设置启动页面,开始页面,关于页面,程序图标,程序控件增删改等,同时Configurations其实包含Add-Ins开发,或者说它就是一个更强大的Add-Ins,学会Configurations开发,实际上也会了Add-Ins开发。

但是对于ArcGIS Pro而言,同一时刻,只能启动一个Configurations程序,而Add-Ins属于加载项,一个ArcGIS Pro程序可以同时加载多个加载项。这个区别在后续博客,笔者会再详细说明。

三.项目结构

创建项目后,可以看到模板默认为我们创建的项目结构如下

image-20230118101814768

1.图片资源以及UI内容

其中DarkImages和Images文件夹里存放的是ArcGIS Pro两个主题(亮暗)时分别用到的图片资源。UI文件夹中存放的是默认为我们创建的关于页面(AboutPage.xaml)、启动页面(SplashScreeen.xaml)、开始页面(StartPage.xaml)以及对应的视图模型类。后续添加的按钮控件或自定义控件都可以添加到UI文件夹中,比如笔者测试添加的TestButton。

2.ConfigurationManager

ConfigurationManager1类继承于ConfigurationManager类,帮助我们设置自定义的关于、启动、开始页面以及程序按钮,方式很简单,就是重载各个方法或属性,返回我们自己定义的相关设置,现在这些方法和属性默认返回的就是UI中的页面。我们可以修改UI中的页面,或者自己创建页面,并修改ConfigurationManager1中重载函数的返回值。

image-20230118102740608

3.Module

Module1类继承于Module(模块)类,是我们子系统的中心访问点,整个Configurations程序启动时,根据DAML配置文件先访问Module类进行初始化,然后模块相关的所有Ribbon、Tab、Group、Button等相关资源才可以进行访问。如果卸载了Module,则所有相关的资源也会被卸载,相应的功能会全部在界面上移除。Module是单例的,其需要被所有相关页面、控件类访问的方法或属性,一般都要求是静态的。

4.DAML配置文件

config.daml是模板为我们自动创建的系统配置文件,它以一种ArcGIS Pro自定义的类xml格式,包含了系统过程中需要用到的各种自定义配置以及Add-Ins相关信息。

image-20230118104843108

其中AddInInfo节点声明了我们Configurations程序的Add-Ins信息,包含了id、版本、名称、描述、作者、公司等。如果我们在vs创建项目时选择了Add-Ins(ArcGIS Pro 模块加载项)项目模板,默认创建的daml配置文件中也会有这样的内容,因此可以证明Configurations其实是更强大的Add-Ins。

Configuration节点声明了系统启动时需要使用的ConfigurationManger类,默认通过className属性指向了ConfigurationManager1类。

Modules节点包含了所有我们需要使用的Module内容,默认是用InsertModule节点声明插入我们的Module1类。注意在daml配置文件中,所有需要被引用的节点都包含了id属性,系统通过id去管理所有相关引用。而Module也不例外,这里默认声明的id是“TestProConfiguration_Module”,以“{项目名称}_”作为前缀,这是一种约定,不是强制要求,只要能保证唯一即可,但是遵守这种约定,会在某些时刻,比如需要过滤筛选我们自己的资源时,可以给我们带来便利。

Module节点下是各种Ribbon相关节点,tabs、groups、controls节点分别插入相关的内容。它们之间的关联关系通过id和refID属性进行关联。其中tabs、groups都是纯声明节点,只需要在daml文件中通过节点以及相关内容声明就可以在界面上显示。而controls下的节点需要借助className关联到具体的视图模型类,比如截图中的TestProConfiguration.UI.TestButton,因为这些需要处理一些自定义逻辑,比如点击事件的处理等。

四.添加按钮

简单添加一个自对应按钮到Ribbon中,右键UI文件,选择添加-新建项。在弹出页面左侧选择ArcGIS节点,然后在中间显示的ArcGIS Pro相关创建项模板中选择ArcGIS Pro 按钮,命名为TestButton。

image-20230118111628376

默认创建TestButton类包含OnClick()重载方法,我们在其中设置弹出消息弹框,内容为“Hello World!"

image-20230118111830844

ArcGIS Pro会自动为我们把TestButton按钮声明到daml文件中,如上一个节点的内容所示。如果当前没有group节点,会为我们自动添加一个group节点并引用我们的button节点。这个group节点不会自动被引用到tab节点,而是通过appearsOnAddInTab=“true”属性值指示此group添加到默认的Add-In标签页中,这是默认设置,可以修改值为“false”并通过id-refID的属性关联到我们自己定义的tab节点。

生成项目并启动,跳过启动页面、开始页面后,点击我们的TestButton按钮,效果如下:

image-20230118112708316

五.总结

第一次写系列博客内容,竟然花了一个上午的时间,个人感觉还有很多细节内容没有写到,比如系统启动后的启动页面、开始页面内容,虽然是模板创建项目自带的,不是很重要所以跳过了。但是还是花费了一个上午的时间,幸好是年末了没啥事,可以在公司写。总体而言,系列的第一篇博客讲述了入门ArcGIS Pro开发的所需安装配置内容,正常按照博客流程操作,就能弹出Hello World了。恭喜,千里之行始于足下,之后笔者会继续通过博客讲述ArcGIS Pro开发遇到的问题以及解决方法。

posted on 2023-01-18 11:59  鹿果一夏  阅读(488)  评论(0编辑  收藏  举报

导航