R 堆叠光栅后如何写入光栅?
我想处理几个光栅文件,然后再写入它们R 堆叠光栅后如何写入光栅?,r,raster,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) 光栅文件 因为d1是一个光栅,而不是光栅列表:实际上overl
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)
光栅文件
因为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])}
d2Plannapus解决方案应该有效。或者,您可以在一个步骤中写入单个文件:
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' )
光栅文件您可以尝试?writeFormats
中提到的格式之一。我想这只是一个虚拟示例,但您不能调用名称以整数开头的变量,它将在“10光栅文件”中抛出错误意外符号
。叠加的结果是一个光栅:请参见?叠加
。此外,您还堆叠了光栅,这意味着从单个图层上的多个光栅可以创建一个具有多个图层的单个光栅。plannapus-您应该将您的注释合并到答案中。我认为这是重要的一点:-)unstack(d1)
为您提供了一个光栅层列表,您可以使用writerater
(使用最新版本的package raster,)将其单独写入一个文件中。它的意思正是:当前目录中已经存在具有此名称的文件。因此,您可以使用不同的名称将其保存在不同的目录中,或者使用参数overwrite=TRUE
(如for(i in seq_沿着(d2)){writerater(d2[[i]],file=outputnames[i],overwrite=TRUE)}
)覆盖它。您只需将路径添加到outputnames
。比如outputnames
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)