1、在ArcGIS中
# import arcpy and set workspace
import arcpy
arcpy.env.workspace = "CURRENT"
# get list of layer names
layer_list = arcpy.GetParameterAsText(0).split(";")
field_name = "LayerName"
# loop through layers and add field if it does not exist
for layer_name in layer_list:
if not arcpy.ListFields(layer_name, field_name):
arcpy.AddField_management(layer_name, field_name, "TEXT")
# loop through layers and update field with layer name
for layer_name in layer_list:
with arcpy.da.UpdateCursor(layer_name, field_name) as cursor:
for row in cursor:
row[0] = layer_name
cursor.updateRow(row)
2、在ArcGIS Pro中
import arcpy
# 获取当前地图文档
aprx = arcpy.mp.ArcGISProject("CURRENT")
m = aprx.listMaps()[0]
# 获取所有图层,并将图层名称写入到属性中
for lyr in m.listLayers():
if lyr.isFeatureLayer:
# 添加字段
if not "LayerName" in [f.name for f in arcpy.ListFields(lyr)]:
arcpy.AddField_management(lyr, "LayerName", "TEXT")
# 将图层名称写入到属性中
with arcpy.da.UpdateCursor(lyr, ["LayerName"]) as cursor:
for row in cursor:
row[0] = lyr.name
cursor.updateRow(row)