Saltar al contenido

Fusionar varios rásteres en R

Solución:

Puedes usar do.call

ast14dmo.sd$tolerance <- 1
ast14dmo.sd$filename <- paste(path.mrg, "/AST14DMO_sd_", z, "m_mrg.tif", sep = "")
ast14dmo.sd$overwrite <- TRUE
mm <- do.call(merge, ast14dmo.sd)

Aquí con algunos datos, del ejemplo en raster::merge

r1 <- raster(xmx=-150, ymn=60, ncols=30, nrows=30)
r1[] <- 1:ncell(r1)
r2 <- raster(xmn=-100, xmx=-50, ymx=50, ymn=30)
res(r2) <- c(xres(r1), yres(r1))
r2[] <- 1:ncell(r2)

x <- list(r1, r2)
names(x) <- c("x", "y")
x$filename <- 'test.tif'
x$overwrite <- TRUE
m <- do.call(merge, x)

La función ‘fusionar’ del paquete Raster es un poco lenta. Para proyectos grandes, una opción más rápida es trabajar con comandos gdal en R.

library(gdalUtils)
library(rgdal)

Cree una lista de todos los archivos ráster a los que desea unirse (en su directorio de trabajo actual).

all_my_rasts <- c('r1.tif', 'r2.tif', 'r3.tif')

Cree un archivo ráster de plantilla sobre el que construir. Piense en esto como un gran lienzo en blanco para agregar mosaicos.

e <- extent(-131, -124, 49, 53)
template <- raster(e)
projection(template) <- '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'
writeRaster(template, file="MyBigNastyRasty.tif", format="GTiff")

Fusiona todos los mosaicos ráster en un ráster grande.

mosaic_rasters(gdalfile=all_my_rasts,dst_dataset="MyBigNastyRasty.tif",of="GTiff")
gdalinfo("MyBigNastyRasty.tif")

Esto debería funcionar bastante bien para la velocidad (más rápido que fusionar en el paquete ráster), pero si tiene miles de mosaicos, es posible que incluso desee considerar la construcción de un vrt primero.

Puedes usar Reduce así por ejemplo:

Reduce(function(...)merge(...,tolerance=1),ast14dmo.sd)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *