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

在R语言中实现不同像元大小栅格的匹配相乘(无需降尺度)

问题描述

需要将30m分辨率的Landsat影像与约25km分辨率的ERA5栅格进行相乘运算。直接将ERA5降尺度至30m会显著增加计算量,因此希望实现:所有与单个25km像元重叠的30m像元,均乘以该25km像元的数值,最终输出保留Landsat的30m分辨率。

模拟示例代码
library(terra)
# 高分辨率栅格(模拟Landsat 30m分辨率)
ETrF <- rast(ncols=4, nrows=4, xmin=73, xmax=75, ymin=31, ymax=33)
# 低分辨率栅格(模拟ERA5 25km分辨率)
ET0 <- rast(ncols=2, nrows=2, xmin=73, xmax=75, ymin=31, ymax=33)
# 为两个栅格赋予随机值
values(ETrF) <- c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8)
values(ET0) <- c(5,1,2,4)

# 需求说明:ET0的第1个像元(值=5)与ETrF的第1、2、5、6个像元重叠
# 需要让5与这些像元值分别相乘,最终输出保持ETrF的分辨率
解决方案

利用terra包的最近邻重采样,将低分辨率栅格匹配到高分辨率栅格的分辨率后再相乘。terra采用懒计算机制,不会提前生成完整的降尺度栅格,能有效控制计算量,完全符合需求。

代码实现:

# 将低分辨率的ET0匹配到ETrF的分辨率(最近邻法保留原大像元数值)
ET0_matched <- resample(ET0, ETrF, method = "near")
# 执行相乘运算,输出分辨率与ETrF一致
ETa <- ETrF * ET0_matched

# 查看运算结果
values(ETa)

结果验证

输出的ETa中,对应ET0第一个像元的4个ETrF像元值为:0.1*5=0.5、0.2*5=1.0、0.5*5=2.5、0.6*5=3.0,完全满足需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:13:20