首页 编程与开发 ArcPy ArcPy 字段批量计算:CalculateField 的常见用法和避坑

ArcPy 字段批量计算:CalculateField 的常见用法和避坑

作者: GIS研习社 更新时间:2026-05-30 13:49:31 分类:ArcPy

ArcPy 的 CalculateField 可以把属性表中的重复字段计算自动化。无论是统一编码、生成名称、更新面积,还是按条件分类,都可以通过脚本批量完成。它的关键是表达式写法和字段类型要匹配。

字符串拼接

import arcpy

fc = r"D:gisdata.gdbparcels"
arcpy.management.CalculateField(
    fc,
    "full_name",
    "!town! + '-' + !village!",
    "PYTHON3"
)

字段引用使用感叹号包裹。字符串字段如果可能为空,建议先处理空值,否则拼接时可能报错。

数值计算

arcpy.management.CalculateField(
    fc,
    "area_mu",
    "!shape.area@SQUAREMETERS! / 666.6667",
    "PYTHON3"
)

面积单位取决于数据坐标系。若图层是经纬度坐标,不建议直接计算面积,应先投影到合适的平面坐标系。

条件判断

code_block = """
def level(v):
    if v is None:
        return '未知'
    elif v >= 80:
        return '高'
    elif v >= 50:
        return '中'
    return '低'
"""

arcpy.management.CalculateField(fc, "level", "level(!score!)", "PYTHON3", code_block)

批量处理建议

正式运行前先复制一份数据或在测试要素类上验证表达式。字段计算会直接改写属性,一旦覆盖原字段,恢复成本很高。对重要字段,建议先新增结果字段,再检查无误后决定是否替换。

相关文章