Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 堆叠光栅后如何写入光栅?_R_Raster - Fatal编程技术网

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)