【ArcGIS Pro二次开发】(54):三调名称转用地用海名称

三调地类和用地用海地类之间有点相似但并不一致。

在做规划时,拿到的三调,都需要将三调地类转换为用地用海地类,然后才能做后续的工作。

一般情况下,三调转用地用海存在【一对一,多对一和一对多】3种情况。

前2种情况直接转换,第3种情况一般转为【待细分】,后续详细调研。一些简单的目前也采用直转,如【交通服务场站用地】直转为【社会停车场用地】,这部分后续再详细推敲。


一、要实现的功能

如上图所示,点击【规划应用】组,【三调】面板下的【三调转用地用海】工具。

弹出工具框如下:

输入参数中:

1、选择三调用地图层。

2、选择三调的地类名称字段,正常情况下应该是【DLMC】。

3、选择要转换输出的字段(文本型)。

点击执行,结果如下:

根据一一映射关系,生成用地用海地类名称。


二、实现流程

这个工具其实就是用了属性映射的方法,准备好三调和用地用海之间的转换表即可。

可查看之前的文章:

【ArcGIS Pro二次开发】(25):属性映射

准备的映射表:

核心代码并不长,和属性映射工具类似。

直接贴上,不详细讲了。

cs 复制代码
                await QueuedTask.Run(() =>
                {
                    // 获取工程默认文件夹位置
                    var def_path = Project.Current.HomeFolderPath;
                    // 复制符号图层文件
                    ToolManager.CopyResourceFile(@"CCTool.Data.Excel.三调用地名称_to_用地用海用地名称.xlsx", def_path + @"\三调用地名称_to_用地用海用地名称.xlsx");
                    // 获取连接表的2个字段名
                    string map_table = def_path + @"\三调用地名称_to_用地用海用地名称.xlsx\sheet1$";
                    string exl_field01 = ToolManager.GetCellFromExcel(map_table, "A1");
                    string exl_field02 = ToolManager.GetCellFromExcel(map_table, "B1");
                    List<string> fields = new List<string>() { exl_field02 };
                    // 连接字段
                    Arcpy.JoinField(in_data, in_field, map_table, exl_field01, fields);
                    // 计算字段
                    Arcpy.CalculateField(in_data, map_field, "!" + exl_field02 + "!");
                    // 删除多余字段
                    Arcpy.DeleteField(in_data, fields);
                });

三、工具文件分享

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

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

相关推荐
唐青枫12 小时前
别把日志、权限写进业务方法:C#.NET 动态代理从原理到实战
c#·.net
fujisheng66113 小时前
Unity UI 生命周期状态机:处理 Covered、异步竞态与事务回滚
c#·unity3d
leoZ23118 小时前
第 8 篇:与 AI 协作的工作流 + 完整案例
前端·人工智能·神经网络·自然语言处理·性能优化·c#·php
fujisheng66120 小时前
Unity 异步 UI 实战:取消令牌、版本校验与旧句柄隔离
c#·unity3d
额鹅恶饿呃21 小时前
随着CentOS官方停服的时间越来越久,大量仍在使用CentOS7的企业和运维从业者
java·python·算法·c#·ruby
乌药ice21 小时前
c#中一个多线程安全的HashSet
开发语言·c#
lfSeanDragon21 小时前
数据结构-前缀树(Trie)
开发语言·c#
张人玉1 天前
基于 C# WinForms + .NET 8 + SQLite + TCP Socket 的多连接通讯调试工具——TCP通讯助手(TcpAssistant)
tcp/ip·sqlite·c#·.net
mldong1 天前
C# 开发者也有自己的轻量工作流引擎了:NuGet 装包,5 分钟跑通一条审批流
后端·c#·.net
samble1 天前
从零搭建工业控制系统(二十二):线程安全与并发控制
c#·wpf·并发·mvvm·线程安全·工业控制