【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文件直接安装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划GIS会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值