Вы можете использовать мощные функции GDAL
. По моему опыту это намного быстрее, чем чистый код R.
Мой подход был бы с library(gdalUtils)
:
Сначала создайте виртуальный растровый файл ( vrt ):
library(gdalUtils)
setwd(...)
gdalbuildvrt(gdalfile = "*.tif", # uses all tiffs in the current folder
output.vrt = "dem.vrt")
Затем скопируйте виртуальный растр в фактический физический файл:
gdal_translate(src_dataset = "dem.vrt",
dst_dataset = "dem.tif",
output_Raster = TRUE # returns the raster as Raster*Object
# if TRUE, you should consider to assign
# the whole function to an object like dem <- gddal_tr..
options = c("BIGTIFF=YES", "COMPRESSION=LZW"))
Другое чистое (и, вероятно, медленнее ) raster
пакетное решение будет:
f <- list.files(path = "your/path", pattern = ".tif$", full.names = TRUE)
rl <- lapply(f, raster)
do.call(merge, c(rl, tolerance = 1))
Вы должны настроить tolerance
, поскольку растровые файлы, вероятно, не будут иметь одинакового происхождения.