动漫网站首页设计,网站建站之后需要维护吗,网站开发开票内容写什么,wordpress官方主题库应网友需求#xff0c;做了这么一个复制字段的小工具。
假定这样一个场景#xff0c;手头有一个要素1#xff0c;要素里有10个字段#xff0c;另一个要素2#xff0c;除了shape_area等图形字段外#xff0c;没有其它字段。
现在的需求是#xff0c;想把要素1中的8个字…应网友需求做了这么一个复制字段的小工具。
假定这样一个场景手头有一个要素1要素里有10个字段另一个要素2除了shape_area等图形字段外没有其它字段。
现在的需求是想把要素1中的8个字段复制给要素2。
这里的复制指的是将这8个字段的字段名别名字段类型、字段长度等信息完全复制过去。当然字段值是基于图斑的所以不能复制新字段的值都为空。
说白了其实就是按要素1的字段样式在要素2中新建8个一模一样的字段。
虽然我也不清楚这个工具有没有用有多大用总之先做出来。 一、要实现的功能 如上图所示在【字段处理】组—【字段综合】面板下点击【复制字段】工具。 在弹出的工具框中分别输入参数
1、输入包含要复制字段的要素图层。
2、输入要输出字段的目标要素图层。
3、通过下拉选择要复制的字段选择后会加入列表框4。
4、通过3选择后列出来的字段可以选择字段行点击喧边的删除键删除不需要的字段。
生成结果如下 如图新增的字段完全继续了原来要素字段的属性。 二、实现流程
首先获取要素1中要复制的8个字段。
这里先创建一个类来存储字段信息每个字段都有4个信息要采集用列表的方式不方便。
// 创建一个字段类
public class FieldDef
{public string fldName { get; set; }public string fldAlias { get; set; }public string fldType { get; set; }public int fldLength { get; set; }
}
再收集字段信息存入列表
ListFieldDef fieldDefs new ListFieldDef();// 获取字段属性
foreach (string item in listbox_field.Items)
{FieldDef fd new FieldDef();FeatureLayer featureLayer MapView.Active.Map.GetLayersAsFlattenedList().OfTypeFeatureLayer().FirstOrDefault(x x.Name fc_before);var inspector new Inspector();inspector.LoadSchema(featureLayer);// 获取属性foreach (var att in inspector){// 如果符合字段名if (att.FieldName item){fd.fldName att.FieldName;fd.fldAlias att.FieldAlias;fd.fldType att.FieldType.ToString();fd.fldLength att.Length;}}// 加入字段集合fieldDefs.Add(fd);
}
收集好字段信息后再用GP工具【添加字段】即可
// 复制字段
foreach (var fd in fieldDefs)
{pw.AddProcessMessage(10, time_base, $复制字段{fd.fldName});Arcpy.AddField(fc_after, fd.fldName, fd.fldType, fd.fldAlias, fd.fldLength);
}
以上便实现了工具的主要功能。 三、工具文件分享
我把工具都集合成工具箱不再单独放单个工具可以到这里下载完整工具箱会不断更新
【ArcGIS Pro二次开发】CC工具箱https://blog.csdn.net/xcc34452366/article/details/131506345PS可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。