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

  • 相关阅读:
    网络SDK套件:Rebex Total Pack 6.8.0.X FOR NET Crack
    [ue5]建模场景学习笔记(1)——混合材质
    Redis之持久化操作
    vue实现按需加载的多种方式
    Javascript知识【JS变量和运算符】
    go语言|数据结构:二叉树(2)广度和深度搜索
    c语言基础(转义字符、printf()、scanf()详解、文件使用方法)
    MySQL 聚合函数初探
    Python 读写 Excel 文件
    告别单调,Django后台主页改造 - 使用AdminLTE组件
  • 原文地址:https://blog.csdn.net/xcc34452366/article/details/133855731