跳到主要内容

栅格值查询

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;每个输入栅格还会增加一个栅格值字段。字段名可能使用服务端内部栅格标识,而不是界面显示名称,实际字段应以输出属性表为准。

查询结果按点记录写入属性表,每个输入栅格对应一个结果字段。下面给出多栅格和分类栅格两个实测示例。

使用步骤​

  1. 准备栅格和点矢量,并确认它们在空间上对应。
  2. 在工具中选择查询栅格和查询点矢量,按需设置查询选项。
  3. 指定输出路径并运行。
  4. 打开输出点矢量的属性表,查看查询结果。

使用示例​

两个示例均在在线昕图项目 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)高程(米)坡度(度)
P112676826.5834644770.780631.642621.87714
P212666185.5244670979.4761237.57222.92671
P312700316.1494617481.205168.99624.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

点catWorldCover 类别值
P1110
P2210
P3350

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 个栅格图层;昕图服务端是否额外限制,尚未单独测试。
  • 输出字段名可能来自云盘内部文件标识,不能仅凭显示名称猜测,应以属性表核对。

相关工具​

技术参考​

计算引擎:GRASS GIS;底层模块:r.what

GRASS GIS 8.5 官方文档:

https://grass.osgeo.org/grass85/manuals/r.what.html