5

我想操作几个光栅文件,然后再次编写它们。

rasterfiles   <- list.files("C:\\data", "*.envi", full.names = TRUE)
d1 <-  overlay(stack(rasterfiles ), 
               fun=function(x) movingFun(x, fun=mean, n=3, na.rm=TRUE))
d2=unstack(d1)

我很感激关于我们如何写作的任何想法d2(光栅)

4

2 回答 2

10
 writeRaster(d1, file="d1.nc") #other file formats such as .envi work as well

工作,因为d1是一个单一的栅格,而不是一个栅格列表:事实上,结果overlay是一个单一的栅格(请参阅 参考资料?overlay)。
另外的概念stack是精确地采用具有一层的多个栅格并产生具有多个层的一个栅格。
最后,如果您真的想单独保存每一层,您可以unstack在写入之前先进行栅格化。
在这种情况下:

d2 <- unstack(d1)
outputnames <- paste(seq_along(d2), ".nc",sep="")
for(i in seq_along(d2)){writeRaster(d2[[i]], file=outputnames[i])}
于 2013-02-15T09:11:44.623 回答
8

Plannapus 解决方案应该有效。或者,您可以在一个步骤中写入单个文件:

 rasterfiles   <- list.files("C:\\data", "*.envi", full.names = TRUE)
 d1 <-  overlay(stack(rasterfiles ), 
           fun=function(x) movingFun(x, fun=mean, n=3, na.rm=TRUE), 
           filename='output.tif' )

或分两步到多个文件

 rasterfiles   <- list.files("C:\\data", "*.envi", full.names = TRUE)
 d1 <-  overlay(stack(rasterfiles ), 
           fun=function(x) movingFun(x, fun=mean, n=3, na.rm=TRUE))
 d2 <- writeRaster(d1, 'out.tif', bylayer=TRUE)
于 2013-02-16T07:11:40.677 回答