【ArcGIS Pro二次开发】(63):批量更改字段别名
在我工作中遇到的大多数图斑,字段名称一般是英文,字段别名是中文,使用起来是比较方便的。
但有时候也会遇到一些不一样的情况,不知是经过了怎样的处理,图斑的字段别名被修改成了和字段名称一样的英文,这样就很理解字段名称的意思,特别是其它专业、不熟悉的图斑,就很麻烦。
这个工具目的就是要将字段别名恢复成中文。
当然也不可能凭空恢复,需要准备一个字段名称和字段别名的对照表。
所以这一般适用于一些规定格式的图斑,有规范明确规定字段名称和字段别名,对照表可以从规范里直接扒下来。
一、要实现的功能

如上图所示,在【字段处理】组—【字段综合】面板下,点击【更新字段别名(属性映射)】工具。

在弹出的工具框中,分别输入参数:
1、输入要修改字段别名的要素图层和独立表。
2、输入准备好的对照表,如下图所示:

生成结果如下:

二、实现流程
实现功能只需要3步。
第一步从Excel表中获取对照表,存成字典即可。
// 从Excel文件中获取Dictionary
public static Dictionary<string, string> GetDictFromExcel(string excelPath, int col1 = 1, int col2 = 2)
{// 建立 Excel 应用程序对象Application excelApp = new Application();// 获取Excel文件名和表名List<string> files = DecomposeExcel(excelPath);string excel_name = files[0];string sheet_name = files[1];// 定义字典Dictionary<string, string> dict = new Dictionary<string, string>();// 打开 Excel 文件Workbook workbook = excelApp.Workbooks.Open(excel_name);// 获取工作表Worksheet worksheet = workbook.Worksheets[sheet_name];// 获取Excel表格中的数据for (int row = 1; row <= worksheet.UsedRange.Rows.Count; row++){var key_va = worksheet.Cells[row, col1].Value;var value_va = worksheet.Cells[row, col2].Value;if (key_va is null || value_va is null){continue;}string key = key_va.ToString();string value = value_va.ToString();// 如果是新值,则纳入dictif (!dict.ContainsKey(key)){dict.Add(key, value);}}// 保存并关闭 Excel 文件和应用程序对象workbook.Close(true);excelApp.Quit();// 返回dictreturn dict;
}
第二步获取要素图层或表中的所有字段。
// 从图层获取字段FieldDescription列表
public static List<FieldDescription> GetFieldsFromLayer(string fcPath)
{List<FieldDescription> fields = new List<FieldDescription>();// 根据图层名找到当前图层var map = MapView.Active.Map;var init_featurelayer = map.FindLayers(fcPath);var init_table = map.FindStandaloneTables(fcPath);// 判断当前选择的是要素图层还是独立表if (init_table.Count > 0){// 是独立表的情况StandaloneTable init_layer = map.FindStandaloneTables(fcPath)[0];fields = init_layer.GetFieldDescriptions();}else if (init_featurelayer.Count > 0){// 是要素图层的情况FeatureLayer init_layer = map.FindLayers(fcPath)[0] as FeatureLayer;fields = init_layer.GetFieldDescriptions();}return fields;
}
第三步按照对照表,对字段别名一一修改即可。
// 更改字段别名
foreach (var field in fields)
{string fieldName = field.Name;if (dic.ContainsKey(fieldName)){pw.AddProcessMessage(2, time_base, @$"更改字段别名:{fieldName}");// 更改字段Arcpy.AlterField(input_fc, fieldName, fieldName, dic[fieldName]);}
}
以上便实现了工具的主要功能。
三、工具文件分享
我把工具都集合成工具箱,不再单独放单个工具,可以到这里下载完整工具箱,会不断更新:
【ArcGIS Pro二次开发】:CC工具箱
https://blog.csdn.net/xcc34452366/article/details/131506345PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。
相关文章:
【ArcGIS Pro二次开发】(63):批量更改字段别名
在我工作中遇到的大多数图斑,字段名称一般是英文,字段别名是中文,使用起来是比较方便的。 但有时候也会遇到一些不一样的情况,不知是经过了怎样的处理,图斑的字段别名被修改成了和字段名称一样的英文,这样…...
redis全套参数配置及降级解决方案
文章目录 redis高可用核心参数配置1.Lettuce2.Jedis3.Redisson4.其他客户端 redis降级场景简介一、业务背景二、设计方案三、实现方案四、总结 redis高可用核心参数配置 1.Lettuce 提示:该客户端无主动探活机制,只能依赖于 OS KeepaAlive 机制…...
AMD即将上市大量中端显卡,为新显卡支付过高价格的日子可能结束
AMD在本周末(8月25日)的德国Gamescom活动中展示了两款新显卡和一些新的升级技术,这些新GPU的定价将与英伟达的GeForce RTX 4000卡竞争。 这是一件大事,因为新的Radeon RX 7700 XT和7800 XT卡占据了AMD Radeon RX 7000系列产品线…...
go学习一之go的初体验
go语言学习笔记 一、golang初体验: 1.简单体验案例: package main{ //把这个test.go归属到main import "fmt" //引入一个包 func main(){//输出hellofmt.Println("hello world")} }2.从案例学到的知识点: (1) go文件的后缀是.…...
智能制造产业链数字化转型、数字化互联工厂建设方案PPT
本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除,更多浏览公众号:智慧方案文库 篇幅有限,无法完全展示,喜欢资料可转发评论,私信了解更多信息。...
【安卓】拿注册码的两种方式
【安卓】拿注册码的两种方式 文章仅用于学习交流,请勿利用文章中的技术对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。首发吾爱:https://www.52pojie.cn/thread-1826802-1-1.html言归…...
【C++】—— 异常处理
前言: 本期,我将给大家讲解的是有关 异常处理 的相关知识! 目录 (一)C语言传统的处理错误的方式 (二)C异常概念 (三)异常的使用 1、异常的抛出和捕获 1️⃣ 异常的…...
cookie和session是什么,区别是什么?
cookie HTTP 协议中的 Cookie 包括 Web Cookie 和浏览器 Cookie,它是服务器发送到 Web 浏览器的⼀ ⼩块数据。服务器发送到浏览器的 Cookie,浏览器会进⾏存储,并与下⼀个请求⼀起发送到服务器。通 常,它⽤于判断两个请求是否来⾃…...
linux的mmc子系统与块设备关联
1.前言 本文主要block组件的主要流程,在介绍的过程中,将详细说明和block相关的流程,涉及到其它组件的详细流程再在相关文章中说明。 2.主要数据结构和API 2.1 struct mmc_card Elemete Namestruct mmc_cardPathinclude/linux/mmc/card.hRe…...
【Spring MVC】
目录 🍮1 什么是 MVC ? 🎁2 Spring MVC 的连接 🍘2.1 RequestMapping 实现 POST 和 GET 请求 🥣2.2 GetMapping 只支持 GET 请求 🫖2.3 PostMapping 只支持 POST 请求 🍬3 Spring MVC 获取参数的…...
【ES】笔记-生成器函数与调用
function* function* 这种声明方式 (function关键字后跟一个星号)会定义一个生成器函数 (generator function),它返回一个 Generator 对象。 function * gen(){console.log("heloo generator")}如何调用呢?先看下里面的内容 返回…...
将Spring Boot与Redis集成
一、引言 1、SpringBoot: Spring Boot是一个用于创建独立且可执行的Spring应用程序的框架。它简化了基于Spring框架的应用程序的开发过程,并提供了一种快速和简便的方式来构建Java应用程序。 Spring Boot提供了自动配置机制,通过引入适当的…...
vue echarts
安装 npm i -D echarts使用 <script setup lang"ts"> import * as echarts from echarts import { onMounted } from vueonMounted(() > {interface DataItem {value: [string, number]}let myChart echarts.init(document.getElementById(main))let dat…...
idea上利用JDBC连接MySQL数据库(8.1.0版)
1.了解jdbc概念 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种 关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建 更高级的工具和接口&#…...
【100天精通python】Day47:python网络编程_Web编程基础
目录 1 网络编程与web编程 1.1 网络编程 1.2 web编程 2 Web开发概述 3 Web开发基础 3.1 HTTP协议 3.2 Web服务器 3.3 前端基础 3.4 静态服务器 3.5 前后端交互的基本原理 4 WSGI接口 4.1 CGI 简介 4.2 WSGI 简介 4.3 定义 WSGI 接口 4.4 运行 WSGI 服务 4.5…...
DockerCompose介绍与使用
DockerCompose介绍与使用 1、DockerCompose介绍 DockerCompose用于定义和运行多容器 Docker 应用程序的工具。 通过 Compose可以使用 YAML 文件来配置应用程序需要的所有服务。一个使用Docker容器的应用,通常由多个容器组成,使用Docker Compose不再需要…...
Windows Qt 5.12.10下载与安装
Qt 入门实战教程(目录) C自学精简实践教程 目录(必读) 1 Qt5.12.10下载 qt-opensource-windows-x86-5.12.10.exe 官方离线安装包 Download Source Package Offline Installers | Qt 下载巨慢(也可能很快) 只能下载到最新的&…...
RustDesk最新版本编译与打包
本文环境 主要参考: https://www.yuque.com/shikangsi/efy0cp/wei3g1?https://blog.csdn.net/hualuohuakai2014/article/details/121605631 问题 flutter 生成 bridge 文件。 先安装工具,再生成ffi文件。 PS C:\Users\Administrator> cargo ins…...
Gin 框架入门实战系列(一)
GIN介绍 Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错 借助框架开发,不仅可以省去很多常用的封装带来的时间,…...
【测试】pywinauto的简单使用(安装、常用对象、元素控件、鼠标操作、键盘操作)
1.说明 pywinauto是一个用于自动化Python 模块,适合Windows系统的软件(GUI),可以通过Pywinauto遍历窗口(对话框)和窗口里的控件,也可以控制鼠标和键盘输入,所以它能做的事情比之前介…...
d2dx:让经典《暗黑破坏神2》在现代PC上重获新生的魔法引擎
d2dx:让经典《暗黑破坏神2》在现代PC上重获新生的魔法引擎 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 还记得…...
【弹簧】碟形弹簧内锥角数值计算Matlab实现
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 …...
深圳汽车救援公司有哪些
行业痛点分析在深圳这座现代化大都市中,汽车已成为市民出行的重要工具。然而,随之而来的汽车救援问题也日益凸显。当前,汽车救援领域面临的技术挑战主要包括响应速度慢、救援效率低、服务范围有限等问题。据数据表明,深圳市内每天…...
开源OpenAI用量查询工具部署指南:实现API成本透明化管理
1. 项目概述与核心价值 最近在折腾OpenAI API的时候,发现一个挺实际的需求:怎么方便地查自己API Key的余额和用量明细?官方Dashboard虽然功能全,但有时候就想快速看一眼,或者团队里几个人共用一个额度池,想…...
电角度测量实战:从理论到示波器波形解析
1. 电角度基础概念解析 第一次接触电机控制时,听到"电角度"这个词确实有点懵。后来在实际项目中才发现,这个概念对理解FOC控制至关重要。简单来说,电角度就是电机磁场旋转时,转子磁极与定子绕组之间的相对位置关系。它和…...
使用pip安装Taotoken的Python包并配置OpenAI兼容调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用pip安装Taotoken的Python包并配置OpenAI兼容调用 对于希望快速将大模型能力集成到Python项目中的开发者而言,通过统…...
基于ATmega16的寝室节能系统:从传感器到继电器的嵌入式实战
1. 项目概述与核心价值 最近在整理大学时期的项目笔记,翻到了一个当年和室友一起折腾的“寝室节能系统”,核心是一块ATmega16单片机。现在回头看,这个项目虽然硬件上不算复杂,但把传感器数据采集、实时控制、人机交互和简单的能源…...
Jaeger在DeepSeek高并发场景下的链路爆炸真相:如何用1个配置将Trace延迟压降92%?
更多请点击: https://intelliparadigm.com 第一章:Jaeger在DeepSeek高并发场景下的链路爆炸真相 当DeepSeek的推理服务集群在每秒处理超12万QPS请求时,Jaeger后端突然出现Trace采样率飙升至98%、Span写入延迟突破3.2s、ES索引碎片数激增至47…...
如何用录播姬BililiveRecorder轻松修复损坏的直播录制文件?3步快速解决方案
如何用录播姬BililiveRecorder轻松修复损坏的直播录制文件?3步快速解决方案 【免费下载链接】BililiveRecorder 录播姬 | mikufans 生放送录制 项目地址: https://gitcode.com/gh_mirrors/bi/BililiveRecorder 录播姬BililiveRecorder是一款专业的B站直播录制…...
如何3分钟实现Postman便携版:Windows免安装API测试终极指南
如何3分钟实现Postman便携版:Windows免安装API测试终极指南 【免费下载链接】postman-portable 🚀 Postman portable for Windows 项目地址: https://gitcode.com/gh_mirrors/po/postman-portable 你是否曾因公司电脑限制而无法安装Postman&#…...
