R - 结合矢量和栅格堆栈层的索引的函数

R - Function to combine index from vector and raster stack layers

我正在尝试编写一个高效的脚本来校准数百张 Landsat 8 图像。在校准步骤的某个点,我需要在光栅堆栈的每一层应用一些系数。

这是一个样本堆栈:

fn <- system.file("external/test.grd", package="raster")
s  <- stack(fn, fn)

这些是示例系数:

mult <- c(0.0003342, 0.0005534) 
add  <- c(0.1, 0.2) 

我需要的是将系数的每个索引应用到堆栈层的对应索引,如本例所示:

s[[1]] <- (s[[1]] * mult[1]) + add[1]
s[[2]] <- (s[[2]] * mult[2]) + add[2]

这是我糟糕的尝试,显然行不通:

cal.fun <- function(x) { 
x <- (x * mult) + add 
}

s.cal <- calc(s, cal.fun, progress='text')

关于如何做到这一点有什么想法吗?

非常感谢。

raster 是一个结构非常好的包,你可以简单地做:

s2 <- s * mult + add

为了快速确认矢量化调用 "just works",请执行以下操作:

library(gridExtra)
library(rasterVis)
grid.arrange(levelplot(s), levelplot(s2), nrow=2)