首页 > 其他分享 >ArcGIS Pro Add-Ins&Configurations开发系列1-

ArcGIS Pro Add-Ins&Configurations开发系列1-

时间:2023-01-18 11:56:45浏览次数:79  
标签:Pro Ins ArcGIS Add 节点 页面

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开发遇到的问题以及解决方法。

标签:Pro,Ins,ArcGIS,Add,节点,页面
From: https://www.cnblogs.com/chenyifaer-67373/p/17059495.html

相关文章

  • pyinstaller打包Python程序报错OSError: Python library not found: libpython3.8.so,
    重新编译python(不影响原来安装的库文件),加入--enable-shared./configure--prefix=/usr/local/python3--enable-shared然后make&&makeinstall就好了现在再次打开pytho......
  • Gitlab集成jenkins及docker自动化部署教程
    Gitlab集成jenkins及docker自动化部署教程能实现提交代码到gitlab后,我们只需要合并代码到指定分支就可以上Jenkins自动拉取最新代码并重新构建部署1、登录Jenkins点击如......
  • linux jenkins maven工程创建打jar包
    1.首相在Linux上安装Java环境(请自行百度)2.安装maven(简单说一下步骤,下载maventar包,解压后配置环境变量,mvn-v命令验证)配置maven依赖路径,打包时要用到依赖,编辑settings.xml......
  • linux jenkins添加windows节点
    1.添加jenkinsnode2.下载jar包上面提供两种方法,第一种下载文件,默认java去启动和运行程序。第二个,你可以拷贝这个命令,放到一个记事本文件,然后保存为bat文件,双击bat文件也......
  • Windows环境下实现Jenkins自动化部署
    1.Jenkins部署环境a.下载安装包​​​http://ftp-chi.osuosl.org/pub/jenkins/war-stable/​​​找最新的安装包进行下载(下载时间有点长)b.在安装包根路径下,运行命令jav......
  • Linux Jenkins安装配置Git
    1.卸载自带的gitapt-getremovegit2.验证是否卸载git--version3.下载git并将git添加到环境变量中wgethttps://github.com/git/git/archive/v2.2.1.tar.gz或者直接在......
  • DynamicProgramming动态规划
    ​​WelcomeToMyBlog​​​刚接触动态规划,突然发现这是个很大的领域,所以就先通过别人的分享以及做题逐步总结了.DynamicProgrammingdynamicprogrammingisamethod......
  • 【Python】爬虫笔记-开源代理池haipproxy使用
    大规模的数据采集需要用到代理池来突破IP封锁。一般代理池的构建是先爬取网上的免费代理,校验后存到数据库中,再提供给其他程序api。github上有很多现成的代理池能拿来用,在......
  • 最完美WIN10_Pro_22H2.19045.2545软件选装纯净版VIP38.7
    【系统简介】=============================================================1.本次更新母盘来WIN10_Pro_22H2.19045.2545。进一步优化调整。2.不支持更新,更新后精简版更新......
  • Centos7上部署Jenkins部署
    Centos7上部署Jenkins部署一、Jenkins是用Java开发的,安装Jenkins之前首先需要安装JDK。yuminstalljava-1.8.0-openjdk*-y#也可以参考源码安装jdkhttps://www.......