You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QGIS使用when...then表达式为多边形赋值众数土地覆盖时出现异常

问题根因

你遇到的空值、赋值错误问题均来自手动编写when...then表达式的天然缺陷:分支覆盖不全、判断逻辑容易出错。以下是更稳妥的可复现解决方案:

操作步骤

第一步:统计多边形内各土地覆盖类型的像素数

直接使用QGIS自带的**区域统计(按类别)**工具(处理工具箱搜索Zonal Statistics by Class即可找到),参数配置如下:

  • 输入栅格层:选择你的土地覆盖分类栅格
  • 栅格类别字段:选择栅格中存储土地覆盖类型编码/名称的对应字段
  • 输入矢量层:选择你的待赋值多边形图层
  • 待计算统计值:仅勾选「计数」
    运行完成后,多边形属性表会自动生成对应每类土地覆盖的像素计数字段,命名格式为count_<类别值>。

第二步:用表达式自动提取最高频类别

新建字段时直接使用以下表达式,无需手动写全when...then分支,避免漏写、逻辑写错:

map_akey(
    -- 下方依次填写「类别名称: 对应计数字段」的键值对,覆盖所有分类即可
    map(
        'road', "count_road",
        'flat roof', "count_flatroof",
        'vegetation', "count_veg",
        'water', "count_water"
    ),
    -- 下方数组里填入所有上一步生成的计数字段
    maximum(array("count_road","count_flatroof","count_veg","count_water"))
)

如果需要处理无重叠/全为nodata的多边形空值场景,可在表达式外嵌套coalesce函数设置默认值:

coalesce(上面的完整表达式, '无有效覆盖数据')

原有逻辑排查方向

如果要定位你现有代码的错误,可按以下顺序校验:

  • 确认栅格和矢量图层坐标系完全一致,坐标系偏移会导致统计范围出错,赋值自然不对
  • 选中赋值错误的多边形,手动核对属性表中各类别的像素计数值,确认统计值本身无误
  • 检查你原有when...then的判断顺序和比较逻辑,90%的赋值错误是因为判断顺序不对、比较符号写反,或者漏了某类别的判断分支导致匹配到错误的条件

内容的提问来源于stack exchange,提问作者Carlo van Opstal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:45:05