Importer plusieurs images raster empilées dans R?

9

Je voudrais importer tous les rasters de mosaïques multiples (chaque mosaïque est composée de 7 couches) du dossier indiqué dans mon R. Ensuite, accédez-y en tant que rasters multicouches uniques.

entrez la description de l'image ici

J'ai donc fait:

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

et mon raster s [[8]] ne contient qu'une seule couche, donc toute la mosaïque n'a pas été importée!

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

Si je lis chaque mosaïque séparément, cela fonctionne:

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

Pourquoi l'outil "empiler" n’importe pas des mosaïques entières mais seulement une bande de la mosaïque et comment est-il possible de l’arranger?

maycca
la source

Réponses:

11

Jetez un oeil à nlayers(s). Le nombre de couches retourné sera égal à 28 - au moins pour l'exemple ci-dessus avec 4 objets multicouches englobant 7 couches chacun. L'application stackà plusieurs fichiers multicouches donne un énorme objet 'RasterStack', c'est-à-dire que tous les objets multicouches uniques sont ajoutés les uns aux autres.

Si vous souhaitez avoir des piles distinctes pour chaque fichier, je vous recommande d'utiliser

s <- lapply(raster_data, stack)

ce qui donne une liste d'objets 'RasterStack', chacun comprenant 7 couches plutôt qu'une énorme pile. Vous pouvez ensuite accéder à des couches particulières, par exemple la 2e couche du 3e objet 'RasterStack', en

s[[3]][[2]]
fdetsch
la source