QGIS 表达式入门:字段计算器里最常用的 12 个写法

QGIS
Dr.GIS
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 单位

实操建议

  1. 先在“选择要素”里用表达式测试逻辑。
  2. 字段计算前备份原字段或新建结果字段。
  3. 涉及面积长度时,先检查图层 CRS。
  4. 用于标注的表达式要考虑空值和显示长度。

项目避坑:虚拟字段适合探索,正式成果要落字段

虚拟字段不会真正写入数据文件,适合临时查看和制图。如果成果要交付、入库或给别人使用,建议计算成真实字段。

这能避免别人打开数据后发现关键字段不存在,也能减少跨软件兼容问题。

FAQ

表达式里字段名为什么有时识别不了?

字段名应使用双引号,文本常量使用单引号。字段名含特殊字符时更要注意。

为什么面积计算结果很小?

很可能图层是经纬度坐标,单位是度。应转换到米制投影坐标系再计算。

标注能不能使用多字段组合?

可以,用字符串拼接和 coalesce 处理空值即可。

总结

QGIS 表达式的价值是把重复、易错的属性处理变成规则化操作。掌握字符串、条件、空值和几何计算四类写法,日常数据整理效率会明显提升。