我想要操作几个光栅文件,然后重新写入它们。
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
(光栅)的想法。
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])}
overlay
的结果是一个单一的栅格: 请参阅?overlay
。此外,您堆叠了多个栅格,这意味着从几个具有单个图层的栅格中,您制作了一个具有多个图层的单一栅格。 - plannapusoverwrite=TRUE
覆盖它(例如 for(i in seq_along(d2)){writeRaster(d2[[i]], file=outputnames[i], overwrite=TRUE)}
)。 - plannapusoutputnames
中。例如:outputnames <- paste("C:\\whateverpathyouwant\\", seq_along(d2), ".nc",sep="")
。这只是一个例子:我不知道你的电脑上存储了什么东西,你想在哪里存储或调用文件。你只需要在某个时候以某种方式输入要写入的文件(带路径)的名称到 writeRaster
中即可。 - plannapusPlannapus方案应该可以工作。或者,您可以一步将内容写入单个文件中:
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)
?writeFormats
中提到的任意一种格式。 - Roman Luštrik