来自两个不同栅格堆栈的栅格图层之间的成对计算

时间:2018-01-29 21:13:58

标签: r raster pairwise

我有2个光栅堆栈。我想在每个堆栈的栅格图层对之间做一些数学运算,产生相同层数的第3个栅格堆栈,即;

r1<- raster stack 1 # 10 raster layers
r2<- raster stack 2 # 10 raster layers

r3<- sqrt(r1^2 + r2^2) # 10 raster layers

这是否等同于循环形式(出于说明目的);

for (i in 1:10) {
r <- sqrt(r1[[i]]^2 + r2[[i]]^2)
r3 <-stack(r3,r)
}

或者是否有更高效的功能应用解决方案?谢谢。

1 个答案:

答案 0 :(得分:0)

示例数据

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

你的确可以做到

x <- sqrt(s^2 + s^2)

另一种方法是

y <- overlay(s, s, fun=function(x, y) { sqrt(x^2 + y^2) } )

结果是一样的:

all(values(x-y) == 0)
#[1] TRUE

不同之处在于,如果您使用overlay,则可以提供文件名以将结果写入磁盘