Importieren mehrerer gestapelter Rasterbilder in R?

9

Ich möchte alle mehreren Mosaik-Raster (jedes Mosaik besteht aus 7 Ebenen) aus dem angegebenen Ordner in mein R importieren . Dann als einzelne Multilayer-Raster darauf zugreifen.

Geben Sie hier die Bildbeschreibung ein

So tat ich:

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

und meine Raster [[8]] enthalten nur 1 Ebene, daher wurde nicht das gesamte Mosaik importiert!

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

Wenn ich jedes Mosaik einzeln lese, funktioniert es:

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

Warum importiert das "Stapel" -Werkzeug nicht ganze Mosaike, sondern nur ein Band des Mosaiks und wie ist es möglich, es anzuordnen?

Maycca
quelle

Antworten:

11

Schau es dir an nlayers(s). Die zurückgegebene Anzahl von Ebenen entspricht 28 - zumindest für das obige Beispiel mit 4 mehrschichtigen Objekten mit jeweils 7 Ebenen. Das Anwenden stackauf mehrere mehrschichtige Dateien führt zu einem riesigen 'RasterStack'-Objekt, dh alle einzelnen mehrschichtigen Objekte werden aneinander angehängt.

Wenn Sie separate Stapel für jede Datei haben möchten, würde ich die Verwendung empfehlen

s <- lapply(raster_data, stack)

Dies führt zu einer Liste von 'RasterStack'-Objekten, die jeweils 7 Ebenen anstelle eines riesigen Stapels enthalten. Sie können dann auf bestimmte Ebenen zugreifen, z. B. auf die 2. Ebene des 3. 'RasterStack'-Objekts

s[[3]][[2]]
fdetsch
quelle