摘要:在ArcMap或ArcGIS Pro中,右键点击目标字段 → 字段计算器(Field Calculator)。
在ArcGIS字段计算器中使用函数需结合表达式编写,以下是具体步骤和示例:
一、打开字段计算器
1. 在ArcMap或ArcGIS Pro中,右键点击目标字段 → 字段计算器(Field Calculator)。
2. 选择 Python 或 VB Script 脚本引擎(默认Python,功能更灵活)。
二、基础用法:直接调用函数
1. 数学函数
- 示例1:计算面积(平方米转公顷)
!面积! / 10000 # 直接运算
round(!面积! / 10000, 2) # 四舍五入保留2位小数
- 示例2:绝对值转换
abs(!海拔高度!) # 取绝对值
2. 字符串函数
- 示例1:拼接地址
!省! + "省" + !市! + "市" # 字符串拼接(Python用+)
- 示例2:提取前3个字符
!地名![0:3] # 切片提取前3位(Python语法)
3. 日期函数
- 示例:计算天数差
(datetime.datetime.now - !日期字段!).days # 当前日期与字段日期的间隔天数
注:需先导入日期模块:
import datetime # 在字段计算器的“预逻辑脚本代码”中添加
三、进阶用法:逻辑判断与复杂表达式
1. 条件判断(if-else)
- 示例:分级赋值
def grade(value):
if value >= 80:
return "优秀"
elif value >= 60:
return "合格"
else:
return "不合格"
grade(!分数!) # 在表达式中调用自定义函数
步骤:
1. 在“预逻辑脚本代码”中编写函数;
2. 在表达式中直接调用函数名。
2. 统计函数(需结合数据驱动)
- 示例:计算分组平均值
需配合 数据驱动表(Data-Driven Pages) 或 按属性选择,逐个分组计算:
# 假设按“区域”分组计算“产量”平均值
from statistics import mean
mean(!产量!) # 需先选中目标分组数据
四、常用技巧
1. 字段引用:
- Python中用 !字段名! (需关闭“使用VB表达式”)。
- VB Script中用 [字段名] 。
2. 数据类型匹配:
- 字符串需用引号(如 '市区' ),数值直接写(如 100 )。
3. 调试工具:
- 先在脚本编辑器中测试表达式,再复制到字段计算器。
- 用 print(!字段名!) 输出字段值检查逻辑。
五、示例:批量生成唯一编号
需求:按“区域”字段生成如 A-001 、 B-001 的唯一编号。
# 预逻辑脚本代码
rec = {} # 全局字典存储区域计数
def get_code(area):
if area not in rec:
rec[area] = 1
else:
rec[area] += 1
return f"{area}-{rec[area]:03d}" # 格式化为A-001样式
# 表达式
get_code(!区域!)
注意事项
- 权限问题:需确保图层可编辑(非只读)。
- 性能优化:大数据量时建议用 计算字段(Calculate Field)工具 替代手动输入。
- 引擎切换:VB Script兼容性强但语法老旧,Python更灵活(推荐)。
通过以上方法,可灵活运用函数完成字段计算、数据清洗、批量赋值等操作。
来源:皓轩教育