堆叠后如何写栅格?

Bar*_*rry 5 r raster

我想要操作几个光栅文件,然后再次写入它们.

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)
Run Code Online (Sandbox Code Playgroud)

我很感激我们如何写d2(栅格)

pla*_*pus 7

 writeRaster(d1, file="d1.nc") #other file formats such as .envi work as well
Run Code Online (Sandbox Code Playgroud)

因为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])}
Run Code Online (Sandbox Code Playgroud)


Rob*_*ans 7

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' )
Run Code Online (Sandbox Code Playgroud)

或分两步执行多个文件

 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)
Run Code Online (Sandbox Code Playgroud)