矩阵的栅格叠加

时间:2013-08-29 12:47:53

标签: r matrix overlay raster r-raster

我有一个包含100个栅格图层的矩阵,我想创建一个平均值的新图层。我知道如果有两层我可以简单地使用叠加功能,或者只是使用c <- mean (a, b)。但是,我不知道如何继续使用矩阵。

以下是矩阵的样本:

[[1]]
class       : RasterLayer 
dimensions  : 175, 179, 31325  (nrow, ncol, ncell)
resolution  : 1, 1  (x, y)
extent      : 0, 179, 0, 175  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : layer 
values      : 0, 100  (min, max)

我试过了

a.avg <- mean (a.total[,])

我收到错误argument is not numeric or logical: returning NA

2 个答案:

答案 0 :(得分:0)

我假设你有list rasterLayer s(或者stack)。如果您已经有stack,请跳过第一步,但我认为您有一个list而不是matrix我称之为mylistofrasters ...

#1 - Get all rasters in the list into a stack
mystack <- do.call( stack , mylistofrasters )

#2 - Take mean of each pixel in the stack returning a single raster that is the average
mean.stack <- calc( mystack , mean , na.rm = TRUE )

答案 1 :(得分:0)

这个答案类似于@ SimonO101使用更简单代码的答案。

首先,让我们构建一个RasterLayer列表(如果您已有列表,可以跳过此步骤):

library(raster)

r <- raster(nrow=10, ncol=10)
r <- init(r, runif)
lr <- lapply(1:8, function(i)r)

raster包定义了列表的stack方法,因此您可以在没有do.call的情况下直接使用它:

s <- stack(lr)

此外,mean个对象有一个Raster*方法。因此,您实际上并不需要calc

mean(s, na.rm=TRUE)