1

我有一个包含 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

4

2 回答 2

0

我假设您有 a listof rasterLayers (或者可能是 a stack)。如果您已经有 a stack,请跳过第一步,但我假设您有一个listnot amatrix我称之为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 )
于 2013-08-29T13:03:44.277 回答
0

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

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

library(raster)

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

rasterstack为列表定义了一个方法,因此您可以直接使用它而无需do.call

s <- stack(lr)

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

mean(s, na.rm=TRUE)
于 2013-09-02T06:55:35.503 回答