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

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

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

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


一、要实现的功能

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

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

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

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

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

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

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

生成结果如下:

【ArcGIS Pro二次开发】(71):添加图层名称和路径到字段_第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 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文件直接安装。

你可能感兴趣的:(ArcGIS,Pro,SDK,ArcGIS,arcgis,arcgis,pro,sdk,c#,二次开发,图层名称,图层路径)