当前,我正在通过将两个图层的均值放在堆栈中同一位置上的方式,将两个包含相同数据的不同投影的栅格堆栈组合到一个栅格堆栈中。问题在于,将均值应用于两个数据集将取整个堆栈的均值,删除图层结构并生成两个栅格:
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循环将它们分开?
谢谢。
答案 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))