使用包栅格可能更适合您的需求。它有一些针对处理遥感数据进行了优化的代码,负责分块处理。考虑这个例子:
## Make 12 rasters, maybe one for each month of the year
for( i in seq(12) ){
assign( paste0( "r" , i ) , raster( matrix(runif(1e3) , nrow = 1e2 ) ) )
}
## Create a raster stack from these
rS <- stack( mget( paste0("r",1:12) , envir = .GlobalEnv ) )
## Use calc to get mean, using by to group by a variable
## In this example I use the vector (1,1,1,2,2,2,3,3,3,4,4,4)
## meaning I get means for the first 3 rasters, then the next 3 etc
## So I get a mean for each quarter
rMean <- calc( rS , fun = function(x){ by(x , c( rep( 1:4 , each=3 ) ) , mean ) } )
它返回一个有 4 层的光栅砖(每个季度一个平均值):
class : RasterBrick
dimensions : 100, 10, 1000, 4 (nrow, ncol, ncell, nlayers)
resolution : 0.1, 0.01 (x, y)
extent : 0, 1, 0, 1 (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : in memory
names : X1, X2, X3, X4
min values : 0.02096586, 0.04015260, 0.04704145, 0.05884161
max values : 0.9727491, 0.9303025, 0.9804486, 0.9934670
我希望你能适应你的数据。