保持层结构的同时两个栅格堆栈的平均值

时间:2018-08-13 12:03:09

标签: r raster r-raster

当前,我正在通过将两个图层的均值放在堆栈中同一位置上的方式,将两个包含相同数据的不同投影的栅格堆栈组合到一个栅格堆栈中。问题在于,将均值应用于两个数据集将取整个堆栈的均值,删除图层结构并生成两个栅格:

stack1 = raster_list[[1]]
stack2 = raster_list[[2]]
sapply(c(stack1, stack2) FUN = mean)
[[1]]
class       : RasterLayer 
dimensions  : 196, 205, 40180  (nrow, ncol, ncell)
resolution  : 0.08333588, 0.08333359  (x, y)
extent      : 64.24827, 81.33213, 19.99832, 36.33171  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : -14.92228, 97.07268  (min, max)


[[2]]
class       : RasterLayer 
dimensions  : 196, 205, 40180  (nrow, ncol, ncell)
resolution  : 0.08333588, 0.08333359  (x, y)
extent      : 64.24827, 81.33213, 19.99832, 36.33171  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : -19.61176, 151.9439  (min, max)

如何最好地进行此操作,最好避免使用for循环将它们分开?

谢谢。

1 个答案:

答案 0 :(得分:0)

提出问题时,请创建一个可复制的示例(带有数据)。

示例数据:

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

不需要的内容,因为它会创建一个RasterLayer:

m1 <- mean(s1, s2)
nlayers(m1)
# [1] 1

取而代之的是:

m2 <- (s1 + s2) / 2
nlayers(m2)
# [1] 3

或:

m3 <- overlay(s1, s2, fun=mean)

如果您有NA个要忽略的内容:

m4 <- overlay(s1, s2, fun=function(x) mean(x, na.rm=TRUE))