Импорт нескольких растровых изображений в R?

9

Я хотел бы импортировать все множественные растры мозаики (каждая мозаика состоит из 7 слоев) из указанной папки в мой R. Затем доступ к ним как одиночные многослойные растры.

введите описание изображения здесь

Так я и сделал:

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

и мой растр [[8]] содержит только 1 слой, поэтому не вся мозаика была импортирована!

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

Если я читаю каждую мозаику отдельно, она работает:

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

Почему инструмент «стек» не импортирует целые мозаики, а только одну полосу мозаики и как это можно организовать?

maycca
источник

Ответы:

11

Посмотрите на nlayers(s). Возвращенное количество слоев будет равно 28 - по крайней мере, для приведенного выше примера с 4-мя многослойными объектами, охватывающими по 7 слоев каждый. Применение stackк нескольким многослойным файлам приводит к одному огромному объекту 'RasterStack', т.е. все отдельные многослойные объекты добавляются друг к другу.

Если вы хотите иметь отдельные стеки для каждого файла, я бы порекомендовал использовать

s <- lapply(raster_data, stack)

в результате получается список объектов 'RasterStack', каждый из которых включает 7 слоев, а не один огромный стек. Затем вы можете получить доступ к определенным слоям, например, к 2-му слою 3-го объекта 'RasterStack',

s[[3]][[2]]
fdetsch
источник