ArcGIS轻松将图层/要素名称写入属性表

2024-08-06 09:00   陕西  

ArcGIS是我们地理信息工作者的得力助手,强大的空间分析功能让数据处理变得轻松。然而,当我们将多个要素合并成一个新图层时,常常会遇到一个棘手的问题:原始的图层名称、要素名称或者别名都不见了!这给后续的数据管理和分析带来了不便。


问题来了

假设你手头有几张不同地区的城市分布图,为了方便分析,你将它们合并成一张全国的城市图层。合并后,新的图层中每个城市的属性表里,只剩下枯燥的FID编号,再也找不到它们原本所属的图层名称、城市名称或者别名了。这就好比一群来自五湖四海的朋友聚在一起,却都变成了没有名字的“路人甲”,多尴尬啊!

Arcpy脚本帮你保留"身份"

为了解决这个难题,我们特意编写了一段简单易用的Python脚本。它的作用就像一位“姓名侦探”,能帮你快速找到每个要素的名称信息,并将它们整齐地写入属性表中。这样你合并后就不用担心无法区分了。

# -*- coding: gbk -*-import arcpy

def add_field_and_calculate_feature_name(input_features, name_options): try: arcpy.env.overwriteOutput = True input_features_list = input_features.split(";") name_options_list = [opt.strip() for opt in name_options.split(";")] # 去除选项中的空格
for input_feature in input_features_list: field_name = "名称计算" field_names = [field.name for field in arcpy.ListFields(input_feature)] if field_name not in field_names: arcpy.AddField_management(input_feature, field_name, "TEXT", field_length=255)
desc = arcpy.Describe(input_feature) feature_name = "DefaultFeatureName" # 默认值
# 根据选项选择对应的名称 if u"图层名" in name_options_list: feature_name = input_feature # 直接使用输入参数的名称作为图层名 elif u"要素名" in name_options_list: feature_name = desc.baseName elif u"要素别名" in name_options_list: feature_name = desc.aliasName
# 使用更新光标计算新字段 with arcpy.da.UpdateCursor(input_feature, [field_name]) as cursor: for row in cursor: row[0] = feature_name cursor.updateRow(row)
except Exception as e: arcpy.AddError(u"Error: {}".format(str(e)))

if __name__ == "__main__": input_features = arcpy.GetParameterAsText(0) name_options = arcpy.GetParameterAsText(1)    add_field_and_calculate_feature_name(input_features, name_options)

使用演示

操作简单:无需复杂的编程知识,只需打开ArcGIS的脚本工具,复制粘贴脚本代码,设置好参数就能运行。

功能强大:支持同时处理多个图层,不仅能提取原始图层名称,还能提取要素名称和别名。

灵活选择:你可以自由选择将哪些名称信息写入属性表,甚至可以自定义字段名称。

安全可靠:脚本自带错误处理机制,如果遇到问题会及时报错,保证你的数据安全。

小贴士:

如果你想将名称信息写入已有的字段,只需将脚本中的field_name变量修改为对应的字段名称即可。

脚本默认使用GBK编码,如果你的数据使用其他编码,请修改脚本开头的coding参数。

结语

有了这个Python脚本,再也不用担心要素合并后名称信息丢失的问题了。快来试试吧,让你的数据管理更加井井有条!如果需要做好的工具箱在公众号后台回复“要素名称”获取。

最后,感谢您的阅读和支持。如果您觉得这篇文章对您有所帮助,请不要吝啬您的关注、点赞、在看、收藏和转发。您的每一个反馈都是我们继续前进的动力。让我们共同期待,在GIS的世界里,探索更多的可能,创造更多的价值。



--THE END--


GIS民工
记录、分享、思考、求知、求是!
 最新文章