2013-12-18 58 views
3

我试图从栅格图层创建栅格图层,其中栅格图层只是重复某个特定次数的栅格图层。重复相同的栅格图层来创建栅格堆栈

我可以做这样的事情:

library(raster) 
rasterstack <- addLayer(rasterlayer, rasterLayer, rasterLayer) 

和工作原理。但是,我想要堆栈约1000层。我想我可以循环,但我想知道是否有更复杂的方法来做到这一点。

我试图这样做的原因是计算带有数据的栅格堆栈的加权平均值,其中每个图层是不同的时间段,并且权重位于不同的栅格图层对象中。我希望,如果我创建具有相同的层数为数据的权重光栅层rasterstack,我就可以这样做:

weightedmean <- weighted.mean(data.RasterStack, weights.RasterStack) 
+0

权重是否空间可变?如果没有,您可以简单地为weighted.mean函数提供一个向量(data.RasterStack中的每个图层的一个数字),而不是栅格堆栈。 –

+0

是的,权重是空间可变的(每个网格单元格不同),但对于每个图层都是相同的。 – user2872602

+1

看看[this](http://stackoverflow.com/questions/21041499/stacking-an-existing-rasterstack-multiple-times/21041582?noredirect=1#comment31634090_21041582)我的近期帖子。 @ SimonO'Hanlon提供了一个很好的答案! – fdetsch

回答

0

实例数据

library(raster) 
r <- raster(ncol=10, nrow=10, vals=1:100) 

解决方案

n <- 10 # number of copies 
s <- stack(lapply(1:n, function(i) r)) 

或者

s <- stack(replicate(n, r))