我想要操作几个光栅文件然后重新编写它们。
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
(栅格)
答案 0 :(得分:7)
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])}
答案 1 :(得分: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' )
或分两步执行多个文件
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)