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

QGIS中如何为生成的网格添加左下角起始的行列编号到属性表

QGIS网格行号列号批量赋值操作方法

推荐使用窗口函数法,无需额外插件,不需要手动录入网格参数,几步即可完成:

操作步骤

  1. 打开目标网格图层的属性表,点击工具栏的字段计算器按钮(计算器形状图标)
  2. 新增行号字段
    • 输出字段名称填写行号,输出字段类型选择「整数(整型)」
    • 表达式栏输入:dense_rank() OVER (ORDER BY round($y, 3) ASC)
    • 点击「确定」等待计算完成即可,计算出的行号默认从左下角最小Y值的网格开始记为1,向上逐行递增
  3. 新增列号字段
    • 再次打开字段计算器,输出字段名称填写列号,输出字段类型选择「整数(整型)」
    • 表达式栏输入:dense_rank() OVER (ORDER BY round($x, 3) ASC)
    • 点击「确定」完成计算,列号默认从最左侧最小X值的网格开始记为1,向右逐列递增
  4. (可选)如果需要直接生成行:列格式的组合编号,可以新建一个文本类型字段,输入表达式:concat("行号", ':', "列号") 即可生成你需要的1:1、2:1、1:2这类标识。

补充说明

  • 表达式中的round($y, 3)是为了避免浮点精度误差导致同一行的网格Y值出现微小差异,如果你确认网格坐标精度足够,可以去掉round()函数直接写$y、$x
  • 如果你使用的QGIS版本不支持窗口函数(仅非常老旧的2.x版本存在该问题),可以使用坐标计算法:
    • 行号表达式:ceil(($y - minimum($y)) / (y_max($geometry) - y_min($geometry))) + 1
    • 列号表达式:ceil(($x - minimum($x)) / (x_max($geometry) - x_min($geometry))) + 1

内容的提问来源于stack exchange,提问作者S7ewie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:06:04