网站公司简介模板,wordpress 文章发布时间,外贸网站建设 如何做,xampp网站后台在我工作中遇到的大多数图斑#xff0c;字段名称一般是英文#xff0c;字段别名是中文#xff0c;使用起来是比较方便的。
但有时候也会遇到一些不一样的情况#xff0c;不知是经过了怎样的处理#xff0c;图斑的字段别名被修改成了和字段名称一样的英文#xff0c;这样…在我工作中遇到的大多数图斑字段名称一般是英文字段别名是中文使用起来是比较方便的。
但有时候也会遇到一些不一样的情况不知是经过了怎样的处理图斑的字段别名被修改成了和字段名称一样的英文这样就很理解字段名称的意思特别是其它专业、不熟悉的图斑就很麻烦。
这个工具目的就是要将字段别名恢复成中文。
当然也不可能凭空恢复需要准备一个字段名称和字段别名的对照表。
所以这一般适用于一些规定格式的图斑有规范明确规定字段名称和字段别名对照表可以从规范里直接扒下来。 一、要实现的功能 如上图所示在【字段处理】组—【字段综合】面板下点击【更新字段别名(属性映射)】工具。 在弹出的工具框中分别输入参数
1、输入要修改字段别名的要素图层和独立表。
2、输入准备好的对照表如下图所示 生成结果如下 二、实现流程
实现功能只需要3步。
第一步从Excel表中获取对照表存成字典即可。
// 从Excel文件中获取Dictionary
public static Dictionarystring, string GetDictFromExcel(string excelPath, int col1 1, int col2 2)
{// 建立 Excel 应用程序对象Application excelApp new Application();// 获取Excel文件名和表名Liststring files DecomposeExcel(excelPath);string excel_name files[0];string sheet_name files[1];// 定义字典Dictionarystring, string dict new Dictionarystring, 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 ListFieldDescription GetFieldsFromLayer(string fcPath)
{ListFieldDescription fields new ListFieldDescription();// 根据图层名找到当前图层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文件直接安装。