Імпорт декількох складених растрових зображень у R?


9

Я хотів би імпортувати всі мозаїчні растри (кожна мозаїка складається з 7 шарів) із зазначеної папки в мій Р. Потім отримайте доступ до них як одиночні багатошарові растри.

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

Так я і зробив:

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

і мої растрові s [[8]] містять лише 1 шар, тому не була ввезена вся мозаїка!

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

Якщо я читаю кожну мозаїку окремо, вона працює:

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

Чому інструмент "стек" не імпортує цілі мозаїки, а лише одну смугу мозаїки, і як це можна організувати?

Відповіді:


11

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

Якщо ви хочете мати окремі стеки для кожного файлу, я рекомендую використовувати

s <- lapply(raster_data, stack)

що призводить до переліку об’єктів "RasterStack", кожен з яких включає 7 шарів, а не один величезний стек. Потім ви можете отримати доступ до певних шарів, наприклад, 2-го шару 3-го об'єкта "RasterStack", користувачем

s[[3]][[2]]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.