我想将 Landsat 30m 分辨率图像与约 25km 分辨率的 ERA5 栅格相乘。我可以将 ERA5 缩小到 30m,但这会增加处理量。我只是想知道是否有可能无论哪个 30m 单元与 25km 单元重叠,这些 30m 单元都会乘以 25km 单元的单个值。
library(terra)
### 1st raster
ETrF <- rast(ncols=4, nrows=4, xmin=73, xmax=75, ymin=31, ymax=33)
### 2nd raster
ET0 <- rast(ncols=2, nrows=2, xmin=73, xmax=75, ymin=31, ymax=33)
### Random values assigned to both rasters
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)
### Now 1st cell of ET0 (value: 5) will overlap with 1st,2nd,5th and 6th cells (values: 0.1,0.2,0.5,0.6)
### of ETrF.Is it possible that 5 gets multiplied with 0.1,0.2,0.5 and 0.6 and final output
### keeps ETrFs resolution.
ETa <- ETrF*ET0.....?
我相信
resample
是正确的方法,也许使用threads
参数可以提高效率。
另一种解决方案是使用
ET0
的质心从 ETrF
提取值,但很难知道它会提高效率多少。我必须用更大的数据集对其进行基准测试。
这是使用示例数据的一种可能方法。
library(terra)
library(sf)
library(dplyr)
ETrF_c <- st_as_sf(as.points(ETrF, values = TRUE)) # ETrF centroids
ETrF_new <- st_as_sf(extract(ET0, ETrF_c, bind = TRUE)) %>%
mutate(value = lyr.1*lyr.1.1) %>%
rasterize(., ETrF, field = 'value')
plot(ETrF_new)