#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)