栅格值查询
grass_r_what 使用点矢量中的点位置,从一个或多个栅格提取对应像元值,并生成带查询结果属性的点矢量。底层 GRASS 模块为 r.what。
功能说明
适合查询采样点、监测点或其他点位的高程、坡度、土地覆盖类别等栅格属性。多个栅格可以在同一批点位上同时查询,便于比较不同栅格变量。
当前昕图服务端定义要求使用点矢量输入和点矢量输出;旧版页面中提到的坐标字符串、输出文本、输出格式和字段分隔符,不属于当前服务端工具的界面参数。
参数说明
| 参数 | 说明 | 必填 | 默认值 |
|---|---|---|---|
| 输入查询栅格 | 一个或多个需要查询的栅格。多个栅格会在同一组点位上分别提取值。 | 是 | 空 |
| 输入查询点矢量 | 提供查询位置的点矢量。非点要素不会作为位置查询点使用。 | 是 | 空 |
| 空值表示 | 查询位置对应像元为空值时写入结果的占位字符串。 | 否 | * |
| 缓存大小 | r.what 的查询点缓存大小。 | 是 | 500 |
| 显示类别标签 | 为有类别标签的栅格附加类别标签,对应 GRASS -f。 | 否 | 关闭 |
| 输出 RGB 颜色 | 附加栅格颜色值,对应 GRASS -r。 | 否 | 关闭 |
| 输出整数类别 | 输出整数类别值而不是原始像元值,对应 GRASS -i。 | 否 | 关闭 |
| 显示点类别 | 附加输入点的类别值,对应 GRASS -v。 | 否 | 关闭 |
| 输出采样点矢量 | 保存查询结果的点矢量。下方示例使用 .pgv。 | 是 | 空 |
输出结果
输出一个点矢量图层,点位置继承输入查询点,栅格查询结果写入属性表。一次查询三个点时,测试结果包含三个输出要素,输出几何在项目详情中显示为 wkbMultiPoint。
基础属性通常包括 fid、id、name、x、y、easting、northing 和 site_name;每个输入栅格还会增加一个栅格值字段。字段名可能使用服务端内部栅格标识,而不是界面显示名称,实际字段应以输出属性表为准。
查询结果按点记录写入属性表,每个输入栅格对应一个结果字段。下面给出多栅格和分类栅格两个实测示例。
使用步骤
- 准备栅格和点矢量,并确认它们在空间上对应。
- 在工具中选择查询栅格和查询点矢量,按需设置查询选项。
- 指定输出路径并运行。
- 打开输出点矢量的属性表,查看查询结果。
使用示例
两个示例均在在线昕图项目 grass-查询栅格(位置查询) 中实际运行,参数和输出属性表已核验。示例使用同一组查询点 pingshan_clean_query_points.pgv,包含 3 个位于平山县域内的点 P1、P2、P3。
示例一:多栅格查询(高程 + 坡度)
在一次任务中同时查询高程 DEM 和坡度两个连续栅格。
输入数据:
- 输入查询栅格:
pingshan_dem_30m.tif(高程,EPSG:3857)pingshan_slope_30m.tif(坡度,EPSG:3857)
- 输入查询点矢量:
pingshan_clean_query_points.pgv(3 个点,EPSG:4326)
关键参数:
- 空值表示:
* - 缓存大小:
500 - 显示类别标签、输出 RGB 颜色、输出整数类别、显示点类别:全部关闭
输出点矢量:pingshan_dem_slope_query.pgv
| 点 | easting(米,EPSG:3857) | northing(米,EPSG:3857) | 高程(米) | 坡度(度) |
|---|---|---|---|---|
| P1 | 12676826.583 | 4644770.780 | 631.6426 | 21.87714 |
| P2 | 12666185.524 | 4670979.476 | 1237.572 | 22.92671 |
| P3 | 12700316.149 | 4617481.205 | 168.9962 | 4.084864 |
每个输入栅格在属性表中产生一个字段:本次线上结果中 rasterdata1 对应高程,rasterdata2 对应坡度。字段名可能随运行环境变化,应结合输入顺序和结果核对。

示例二:分类栅格查询(WorldCover)
查询 ESA WorldCover 土地覆盖分类栅格,并输出整数类别值。
输入数据:
- 输入查询栅格:
pingshan_worldcover_2021_30m.tif(分类栅格,EPSG:3857) - 输入查询点矢量:
pingshan_clean_query_points.pgv(3 个点,EPSG:4326)
关键参数:
- 显示类别标签:开启
- 输出整数类别:开启
- 显示点类别:开启
- 输出 RGB 颜色:关闭
- 空值表示:
*
输出点矢量:pingshan_worldcover_query.pgv
| 点 | cat | WorldCover 类别值 |
|---|---|---|
| P1 | 1 | 10 |
| P2 | 2 | 10 |
| P3 | 3 | 50 |
WorldCover 分类中,10 表示树木覆盖(Tree cover),50 表示建成区(Built-up)。cat 字段为输入点的类别值,由“显示点类别”选项产生。
说明:
- 分类栅格为 EPSG:3857,输出的
easting、northing也按 EPSG:3857 记录;工具会把查询点重投影到栅格坐标系后查询。 - 类别标签字段可能为空。只有当输入栅格带有 GRASS 类别或颜色表时,标签才会填充;本示例中标签字段为空,但整数类别值正常可用。

注意事项
- 输入栅格和查询点必须空间对应;坐标系不一致或范围不重叠时,结果可能为空或无效。
- 曾有同名旧版 DEM 使用无 EPSG 编码的自定义 Albers 坐标系,直接运行失败并出现
File name too long。本示例线上项目中的pingshan_dem_30m.tif为 EPSG:3857;使用其他版本时应先核对坐标系,必要时重投影为可识别的标准 CRS。 - 连续栅格应读取原始数值;类别标签和整数类别选项主要用于分类栅格。
- NULL/NoData 位置使用“空值表示”中的字符串,不应解释为零。
- GRASS 官方文档说明一次最多查询 400 个栅格图层;昕图服务端是否额外限制,尚未单独测试。
- 输出字段名可能来自云盘内部文件标识,不能仅凭显示名称猜测,应以属性表核对。
相关工具
- 栅格剖面分析
r.category、r.report、r.stats、r.univar、v.what
技术参考
计算引擎:GRASS GIS;底层模块:r.what
GRASS GIS 8.5 官方文档: