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

时间:2015-02-05 19:17:34

标签: r function stack raster

我正在尝试编写一个高效的脚本来校准数百个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')

关于如何做到这一点的任何想法?

非常感谢。

1 个答案:

答案 0 :(得分:2)

raster 是一个非常精心构建的软件包,你可以简单地做到:

s2 <- s * mult + add

为了快速直观地确认该向量化呼叫&#34;只是工作&#34;,做这样的事情:

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

enter image description here