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


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

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

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


    一、要实现的功能

     

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

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

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

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

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

    生成结果如下:


    二、实现流程

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

    1. // 获取参数
    2. bool isAddName = (bool)checkBox_name.IsChecked;
    3. bool isAddPath = (bool)checkBox_path.IsChecked;
    4. string fieldName = txt_name.Text;
    5. string fieldPath = txt_path.Text;
    6. // 文本空值处理
    7. if (txt_name.Text == "") { fieldName = "LayerName"; }
    8. if (txt_path.Text == "") { fieldPath = "LayerPath"; }
    9. // 判断参数是否选择完全
    10. if (isAddName == false && isAddPath == false)
    11. {
    12. MessageBox.Show("有必选参数为空!!!");
    13. return;
    14. }
    15. if (listbox_fc.Items.Count == 0)
    16. {
    17. MessageBox.Show("有必选参数为空!!!");
    18. return;
    19. }
    20. Close();
    21. // 获取要素列表
    22. List<string> list_layer = ToolManager.GetStringListFromListBox(listbox_fc);
    23. await QueuedTask.Run(() =>
    24. {
    25. foreach (var layer in list_layer)
    26. {
    27. pw.AddProcessMessage(5, time_base, $"处理要素或表:{layer}");
    28. // 添加图层名称
    29. if (isAddName)
    30. {
    31. // 添加字段
    32. Arcpy.AddField(layer, fieldName, "TEXT");
    33. // 计算字段
    34. Arcpy.CalculateField(layer, fieldName, $"'{layer}'");
    35. }
    36. // 添加图层路径
    37. if (isAddPath)
    38. {
    39. // 获取路径
    40. string path = ToolManager.GetPathFromLayer(layer).Replace("\\", "/");
    41. // 添加字段
    42. Arcpy.AddField(layer, fieldPath, "TEXT");
    43. // 计算字段
    44. Arcpy.CalculateField(layer, fieldPath, $"'{path}'");
    45. }
    46. }
    47. });

    三、工具文件分享

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

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

  • 相关阅读:
    python爬虫(4)
    赞奇出席2022华为全联接大会,数字智能化“云上”见真章
    IOT 围炉札记
    一文带你了解SpringMVC框架的基本使用
    PHP:CartesianProduc笛卡尔乘积算法(附完整源码)
    到底要不要写注释?
    孙卫琴的《精通Vue.js》读书笔记-CSS中DOM元素的过渡模式
    c、c++、java、python、js对比【面向对象、过程;解释、编译语言;封装、继承、多态】
    TOPS是每秒一万亿次操作
    1163. 按字典序排在最后的子串-解题思路推导
  • 原文地址:https://blog.csdn.net/xcc34452366/article/details/133855731