【ArcGIS Pro二次开发】(71):添加图层名称和路径到字段

如题,这个工具的目的就是将图层的名称和路径添加到字段值中。

有时候图层的名称和路径也是重要的信息,需要参与到字段的计算或是分析中,但是Arcgis Pro中没有一个方便的方法可以将其写入字段值,因此,就做了这么一个小工具。

实际上在以前的工具已经包含了这样的功能,这里就是将期单独抽取出来。


一、要实现的功能

 

如上图所示,在【字段处理】组—【字段综合】面板下,点击【添加图层名和路径到字段】工具。

在弹出的工具框中,分别输入参数:

1、输入要处理的图层,可多选。

2、输入图层名称字段。预设字段名为【LayerName】。可以修改,但是需要注意如果图层是shp要素,字段名有长度限制,如中文不能超过3个。

3、输入图层路径字段。限制条件如上。

生成结果如下:


二、实现流程

代码比较简单,直接贴上,不作详细说明了。

// 获取参数
bool isAddName = (bool)checkBox_name.IsChecked;
bool isAddPath = (bool)checkBox_path.IsChecked;
string fieldName = txt_name.Text;
string fieldPath = txt_path.Text;
// 文本空值处理
if (txt_name.Text == "") { fieldName = "LayerName"; }
if (txt_path.Text == "") { fieldPath = "LayerPath"; }// 判断参数是否选择完全
if (isAddName == false && isAddPath == false)
{MessageBox.Show("有必选参数为空!!!");return;
}
if (listbox_fc.Items.Count == 0)
{MessageBox.Show("有必选参数为空!!!");return;
}Close();// 获取要素列表
List<string> list_layer = ToolManager.GetStringListFromListBox(listbox_fc);await QueuedTask.Run(() =>
{foreach (var layer in list_layer){pw.AddProcessMessage(5, time_base, $"处理要素或表:{layer}");// 添加图层名称if (isAddName){// 添加字段Arcpy.AddField(layer, fieldName, "TEXT");// 计算字段Arcpy.CalculateField(layer, fieldName, $"'{layer}'");}// 添加图层路径if (isAddPath){// 获取路径string path = ToolManager.GetPathFromLayer(layer).Replace("\\", "/");// 添加字段Arcpy.AddField(layer, fieldPath, "TEXT");// 计算字段Arcpy.CalculateField(layer, fieldPath, $"'{path}'");}}
});

三、工具文件分享

我把工具都集合成工具箱,不再单独放单个工具,可以到这里下载完整工具箱,会不断更新:

【ArcGIS Pro二次开发】:CC工具箱icon-default.png?t=N7T8https://blog.csdn.net/xcc34452366/article/details/131506345PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/140417.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023_Spark_实验十五:自定义法创建Dataframe及SQL操作

方式二&#xff1a;SQL方式操作 1.实例化SparkContext和SparkSession对象 2.创建case class Emp样例类&#xff0c;用于定义数据的结构信息 3.通过SparkContext对象读取文件&#xff0c;生成RDD[String] 4.将RDD[String]转换成RDD[Emp] 5.引入spark隐式转换函数&#xff08…

探索Java NIO:究竟在哪些领域能大显身手?揭秘原理、应用场景与官方示例代码

一、NIO简介 Java NIO&#xff08;New IO&#xff09;是Java SE 1.4引入的一个新的IO API&#xff0c;它提供了比传统IO更高效、更灵活的IO操作。与传统IO相比&#xff0c;Java NIO的优势在于它支持非阻塞IO和选择器&#xff08;Selector&#xff09;等特性&#xff0c;能够更…

Windows运维相关经验技巧

常用工具 在线PS Photoshop在线 FAQ 电脑能上网&#xff0c;浏览器上不了网 # 错误原因&#xff1a; 设置了网络代理&#xff0c;浏览器无法通过网络代理上网# 解决办法 关闭网络代理 &#xff08;1&#xff09;wini&#xff0c;打开设置 &#xff08;2&#xff09;网络和I…

LabVIEW建立生产者消费者

LabVIEW建立生产者消费者 生产者/消费者设计模式由并行循环组成&#xff0c;这些循环分为两类&#xff1a;生产者循环和消费者循环。生产者循环和消费者循环间的通信可以使用队列或通道连线来实现。 队列 LabVIEW内置的队列操作VI可在函数选板>>数据通信>>队列操…

RK3588开发笔记(二):基于方案商提供sdk搭建引入mpp和sdk的宿主机交叉编译Qt5.12.10环境

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/133915614 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

【周末闲谈】VR新视界,“眼”见未来

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录 系列目录前言虚拟现实(VR)技术虚拟现实技术的原理虚拟现实技术发…

如何绕过api的防重放做安全测试

一、问题引入&#xff1a;api接口测试&#xff0c;会检测请求头中的nonce参数的值&#xff0c;每次请求的值必须不同&#xff0c;否则发包失败 笔者在进行api接口的测试时&#xff08;因为菜没有工具&#xff0c;只能另辟蹊跷&#xff09;&#xff0c;使用postmanxray进行安全测…

Excel文件带有密码的只读模式,如何设置?

Excel带有密码的除了打开密码和工作表保护以外&#xff0c;其实还有一种可以设置密码的方法&#xff0c;今天给大家分享如何设置带有密码的只读模式。 打开excel文件&#xff0c;将文件进行【另存为】设置&#xff0c;然后停留在保存路径的界面中&#xff0c;我们点击下面的工…

计算机网络第2章-CDN(4)

视频流和内容分发网 HTTP流和DASH 在HTTP流中&#xff0c;视频只是存储在HTTP服务器中作为一个普通的文件&#xff0c;每个文件有有一个特定的URL。当用户要看视频时&#xff0c;客户与服务器之间创建一个TCP连接并发送HTTP GET请求。 HTTP流具有严重缺陷&#xff0c;即所有…

笔记本触摸板没反应?实用技巧助你成功修复!

笔记本电脑是我们日常工作和学习的得力工具之一&#xff0c;而触摸板作为一个重要的输入设备&#xff0c;对于操作的流畅性至关重要。然而&#xff0c;有时候我们可能会遇到笔记本触摸板没反应的问题&#xff0c;这可能会导致困扰和不便。本文将介绍解决笔记本触摸板无响应问题…

虚拟机来安装Linux的优势

笔者认为&#xff0c;通过虚拟机软件学习是初学者学习 Linux 的最佳方式。在与部分读者的交流中&#xff0c;笔者发现&#xff0c;很多初学者都认为&#xff0c;学习 Linux 就必须将自己的电脑装成 Linux 系统或者必须要有真正的服务器设备。而实际上&#xff0c;这是一些机构、…

MSQL系列(四) Mysql实战-索引分析Explain命令详解

Mysql实战-索引分析Explain命令详解 前面我们讲解了索引的存储结构&#xff0c;我们知道了BTree的索引结构&#xff0c;也了解了索引最左侧匹配原则&#xff0c;到底最左侧匹配原则在我们的项目中有什么用&#xff1f;或者说有什么影响&#xff1f;今天我们来实战操作一下&…