如题,这个工具的目的就是将图层的名称和路径添加到字段值中。
有时候图层的名称和路径也是重要的信息,需要参与到字段的计算或是分析中,但是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文件直接安装。