QGIS 表达式入门:字段计算器里最常用的 12 个写法
wowwwai
GIS研习社 · 工具流程与项目排障
问题场景:字段计算器不是临时小工具,而是效率入口
QGIS 表达式常被初学者当成字段计算器里的“公式”。实际上,它贯穿属性计算、筛选、标注、符号化、布局动态文本和虚拟字段。很多重复编辑动作,例如拼接名称、按条件分类、计算面积、处理空值,都可以用表达式一次完成。
表达式写不好,问题通常不在语法,而在字段类型、空值和坐标单位没有想清楚。本文不追求罗列所有函数,而是把日常项目最常用、最容易出错的写法整理成可复用模式。
字符串拼接与空值处理
"name" || '-' || "code"
coalesce("remark", '无')
upper("type")
字段名使用双引号,文本常量使用单引号。拼接字段时最容易被空值影响,一个字段为空可能导致结果不完整。coalesce 可以为空字段提供默认值,是制作标注和成果字段时非常实用的函数。
条件分类写法
if("pop" > 100000, '高', '低')
case
when "score" >= 80 then '优'
when "score" >= 60 then '中'
else '低'
end
简单二分可用 if,多等级分类建议用 case when。分类字段最好输出稳定字典值,避免同一含义出现多个写法。
面积、长度与几何表达式
area($geometry)
length($geometry)
round(area($geometry) / 1000000, 2)
x(centroid($geometry))
y(centroid($geometry))
面积和长度单位取决于图层 CRS。如果图层是经纬度坐标,不应直接把 area($geometry) 当平方米。正式统计前,应先转换到合适投影坐标系。
| 任务 | 推荐表达式 | 注意点 |
|---|---|---|
| 字段拼接 | || | 处理空值 |
| 等级分类 | case when | 分类规则要稳定 |
| 面积计算 | area($geometry) | 先确认 CRS 单位 |
实操建议
- 先在“选择要素”里用表达式测试逻辑。
- 字段计算前备份原字段或新建结果字段。
- 涉及面积长度时,先检查图层 CRS。
- 用于标注的表达式要考虑空值和显示长度。
项目避坑:虚拟字段适合探索,正式成果要落字段
虚拟字段不会真正写入数据文件,适合临时查看和制图。如果成果要交付、入库或给别人使用,建议计算成真实字段。
这能避免别人打开数据后发现关键字段不存在,也能减少跨软件兼容问题。
FAQ
表达式里字段名为什么有时识别不了?
字段名应使用双引号,文本常量使用单引号。字段名含特殊字符时更要注意。
为什么面积计算结果很小?
很可能图层是经纬度坐标,单位是度。应转换到米制投影坐标系再计算。
标注能不能使用多字段组合?
可以,用字符串拼接和 coalesce 处理空值即可。
总结
QGIS 表达式的价值是把重复、易错的属性处理变成规则化操作。掌握字符串、条件、空值和几何计算四类写法,日常数据整理效率会明显提升。