如题,这个工具的目的就是将图层的名称和路径添加到字段值中。
有时候图层的名称和路径也是重要的信息,需要参与到字段的计算或是分析中,但是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工具箱https://blog.csdn.net/xcc34452366/article/details/131506345PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。