¿Importar múltiples imágenes ráster apiladas en R?

9

Me gustaría importar todos los rásteres de mosaico múltiples (cada mosaico está compuesto por 7 capas) de la carpeta indicada en mi R. Luego, acceda a ellos como rásteres de múltiples capas individuales.

ingrese la descripción de la imagen aquí

Así que lo hice:

# read all mosaics named "mos....img" in R    
raster_data<-list.files(path=getwd(), pattern="mos.*.img$") 
# read files as rasters
s <- stack(raster_data)
# check my imported rasters p.ex. raster n°8 from "s" raster stack
s[[8]]         

y mi ráster s [[8]] contiene solo 1 capa, por lo que no se importó todo el mosaico.

nlayers(s[[8]])
[[1]]

Si leo cada mosaico por separado, funciona:

# read 1 mosaic (composed by 7 bands)
mosaic1<-brick("mosaic1.img")
# extract one band
band4<-subset(mosaic1, 4)

¿Por qué la herramienta "apilar" no importa mosaicos completos sino solo una banda del mosaico y cómo es posible organizarlo?

maycca
fuente

Respuestas:

11

Echa un vistazo a nlayers(s). El número de capas devuelto será igual a 28, al menos para el ejemplo anterior con 4 objetos multicapa que abarcan 7 capas cada uno. La aplicación stacka múltiples archivos de múltiples capas da como resultado un gran objeto 'RasterStack', es decir, todos los objetos de múltiples capas individuales se unen entre sí.

Si desea tener pilas separadas para cada archivo, le recomendaría usar

s <- lapply(raster_data, stack)

lo que da como resultado una lista de objetos 'RasterStack', cada uno con 7 capas en lugar de una gran pila. Luego puede acceder a capas particulares, por ejemplo, la segunda capa del tercer objeto 'RasterStack', por

s[[3]][[2]]
fdetsch
fuente