Importujesz wiele ułożonych obrazów rastrowych w R?


9

Chciałbym zaimportować wszystkie wielokrotne rastry mozaikowe (każda mozaika składa się z 7 warstw) ze wskazanego folderu do mojego R. Następnie uzyskać do nich dostęp jako pojedyncze rastry wielowarstwowe.

wprowadź opis zdjęcia tutaj

Więc zrobiłem:

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

a moje rastry [[8]] zawierają tylko 1 warstwę, więc nie cała importowana mozaika!

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

Jeśli przeczytam każdą mozaikę osobno, zadziała:

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

Dlaczego narzędzie do układania w stos nie importuje całych mozaik, ale tylko jeden pas mozaiki i jak można je ustawić?

Odpowiedzi:


11

Spójrz na nlayers(s). Zwrócona liczba warstw będzie równa 28 - przynajmniej w powyższym przykładzie z 4 obiektami wielowarstwowymi obejmującymi po 7 warstw. Zastosowanie stackdo wielu plików wielowarstwowych powoduje powstanie jednego ogromnego obiektu „RasterStack”, tj. Wszystkie pojedyncze obiekty wielowarstwowe są do siebie dołączane.

Jeśli chcesz mieć osobne stosy dla każdego pliku, polecam użycie

s <- lapply(raster_data, stack)

co daje listę obiektów „RasterStack”, z których każdy zawiera 7 warstw zamiast jednego ogromnego stosu. Następnie możesz uzyskać dostęp do poszczególnych warstw, np. Drugiej warstwy trzeciego obiektu „RasterStack”, poprzez

s[[3]][[2]]
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.