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

GRASS GIS:r.resamp.filter执行错误及高斯滤波重采样需求

解决GRASS GIS r.resamp.filter高斯滤波重采样错误

问题背景

需将15m分辨率栅格通过sigma=0.5的高斯滤波重采样至460m,用于地理加权面到点回归克里金法(GWATPRK)降尺度流程(要求先将精细影像升采样至粗分辨率匹配GWR像素尺寸)。操作流程为:

  • 用r.external导入栅格
  • 用g.region基于原始精细影像设置区域,修改2D分辨率为460m
  • 运行r.resamp.filter时触发两类错误:
    1. 使用gauss+box双内核时:ERROR: Differing number of values for filter= and [xy_]radius=
    2. 仅使用gauss单内核时:ERROR: At least one filter must be finite

错误原因分析

  1. 双内核参数不匹配:当filter=指定多个滤波内核时,radius=(或xy_radius=)必须为每个内核对应设置半径值,参数数量需完全一致。若仅输入单个半径值,会触发参数数量不匹配错误。
  2. 单高斯内核窗口无效:提示“至少一个滤波器必须有限”,是因为设置的滤波窗口半径过小,未覆盖足够的输入精细分辨率像素,导致高斯权重计算无有效样本支撑。

解决方案

1. 确保区域设置正确

先确认g.region的设置,保证区域范围与原始15m栅格完全一致,且分辨率精准对齐460m:

g.region raster=your_15m_raster_name res=460 -a

-a参数自动对齐分辨率与区域边界,避免出现非整数像素的异常问题。

2. 单高斯内核正确命令(满足sigma=0.5需求)

针对核心需求,使用单高斯内核即可,需指定sigma=0.5,同时设置合理的滤波窗口半径(建议取0.5*460=230m,或扩大至3倍sigma对应的690m,确保覆盖足够输入像素):

r.resamp.filter input=your_15m_raster_name output=resampled_460m_gauss filter=gauss sigma=0.5 radius=230
  • sigma=0.5:直接匹配需求的高斯标准差
  • radius=230:设置滤波窗口的地理半径(单位:米),确保窗口覆盖约15个15m输入像素,保证权重计算有效

3. 双内核错误的修正(若需使用)

如果确实需要结合多个滤波内核,需保证filter=和radius=的参数数量一致,例如:

r.resamp.filter input=your_15m_raster_name output=resampled_460m_dual filter=gauss,box radius=230,460 sigma=0.5

此处gauss对应radius=230,box对应radius=460,参数数量完全匹配,可避免报错。

验证步骤

  • 用r.info resampled_460m_gauss查看输出栅格的分辨率,确认已设置为460m
  • 用r.univar input=your_15m_raster_name,resampled_460m_gauss对比输入输出栅格的统计值,验证高斯滤波的平滑效果符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:01:57