Как я могу вычислить операции со всеми растровыми данными определенной папки в R?

#r #loops #raster

Вопрос:

Я новичок в Р. У меня есть папка (foder1) с серией растровых данных (Raster01.tif, Raster02.tif, ….., Raster69.tif). Я бы умножил каждый растр на число (0.0001) и сохранил полученные данные с тем же именем, но в новой папке (folder2). Как я могу выполнить этот процесс?

Ответ №1:

Вы всегда должны показывать, что вы пробовали — и на этом сайте есть похожие вопросы, на которые вы могли бы сослаться. Рабочие процессы могут быть чем-то в этом роде:

Получение входных файлов

 library(raster)
f <- list.files("folder1", pattern="tif$", full.names=TRUE)
 

Если они имеют одинаковый объем и разрешение

 s <- stack(f)
s <- calc(s, function(x) x * 0.0001, filename="folder2/output.tif")
 

или, может быть,

 s <- stack(f)
s <- s * 0.0001 
writeRaster(s, filename="folder2/out.tif")
# or use bylayer=T 
writeRaster(s, filename="folder2/out.tif", bylayer=TRUE)
 

Для обработки файлов один за другим

  fun <- function(f) {
     r <- raster(f)
     outf <- gsub("folder1", "folder2", f)         
     writeRaster(r * 0.0001, outf)
 }

 f <- list.files("folder1", pattern="tif$", full.names=TRUE)
 x <- lapply(f, fun)