需求:
将其它图层(图层A、B)的字段添加到另一图层(图层C)属性表中
如下图:
下图中“气象数据201706”图层已有6个字段,现在想将“point”图层中除了OBJECTID、SHAPE之外的字段添加到“气象数据201706”图层中。
具体实现:
使用Python脚本进行实现,通过遍历“point”图层并将其字段名称、类型等参数获取到传递给arcpy.AddField_management()方法,需要注意的是arcpy中添加字段时定义的字段类型名称和字段的type属性获取到的字段类型不一致。
具体代码:
# 2020-1-19
# 将其它图层(图层A、B)的字段添加到另一图层(图层C)属性表中
# 基于Python3实现
import arcpy
from arcpy import env
# 设置工作空间
env.workspace = r"D:\GPTOOL\空间插值气象站点数据\test.gdb"
# 字段结构
fieldsFrom = "point"
# 添加字段给哪个要素图层
fieldsTo = "气象数据201706"
# 字段列表
fieldList = arcpy.ListFields(fieldsFrom)
# 遍历指标
for fld in fieldList:
print("field name: " + fld.name + " field type: " + fld.type + " " + " field precision: " + str(
fld.precision) + " field scale: " + str(fld.scale))
if fld.name.upper() == "OBJECTID" or fld.name.upper() == "SHAPE" or fld.name.upper() == "SHAPE_LENGTH" or fld.name.upper() == "SHAPE_AREA":
continue
else:
if fld.type == 'SmallInteger':
print(fld.type)
arcpy.AddField_management(fieldsTo, fld.name, "SHORT") # 短整型
print("field name: " + fld.name + " field type: " + fld.type)
elif fld.type == 'Integer':
arcpy.AddField_management(fieldsTo, fld.name, "LONG") # 长整型
print("field name: " + fld.name + " field type: " + fld.type)
elif fld.type == 'Single':
arcpy.AddField_management(fieldsTo, fld.name,
"FLOAT") # 浮点型
print("field name: " + fld.name + " field type: " + fld.type)
elif fld.type == 'String':
arcpy.AddField_management(fieldsTo, fld.name,
"TEXT",
field_length=254) # 文本型
print("field name: " + fld.name + " field type: " + fld.type)
else:
arcpy.AddField_management(fieldsTo, fld.name,
fld.type) #
print("field name: " + fld.name + " field type: " + fld.type)