Importazione di più immagini raster impilate in R?


9

Vorrei importare tutti i raster di mosaico multipli (ogni mosaico è composto da 7 strati) dalla cartella indicata nel mio R. Quindi accedervi come singoli raster multistrato.

inserisci qui la descrizione dell'immagine

Così ho fatto:

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

e il mio raster s [[8]] contiene solo 1 strato, quindi non è stato importato l'intero mosaico!

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

Se leggo ogni mosaico separatamente, funziona:

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

Perché lo strumento "stack" non importa interi mosaici ma solo una banda del mosaico e come è possibile disporlo?

Risposte:


11

Dai un'occhiata nlayers(s). Il numero di strati restituito sarà uguale a 28, almeno per l'esempio precedente con 4 oggetti multistrato che comprendono 7 livelli ciascuno. L'applicazione stacka più file multistrato comporta un enorme oggetto "RasterStack", ovvero tutti i singoli oggetti multistrato vengono aggiunti l'uno all'altro.

Se desideri avere stack separati per ciascun file, ti consiglio di utilizzare

s <- lapply(raster_data, stack)

che risulta in un elenco di oggetti "RasterStack", ciascuno con 7 livelli anziché uno stack enorme. È quindi possibile accedere a livelli particolari, ad esempio il 2 ° livello del 3 ° oggetto "RasterStack", da

s[[3]][[2]]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.