Importando várias imagens raster empilhadas no R?

9

Gostaria de importar todos os múltiplos rasters de mosaico (cada mosaico é composto por 7 camadas) da pasta indicada para o meu R. Em seguida, acesse-os como rasters de multicamadas únicas.

insira a descrição da imagem aqui

Então eu fiz:

# 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 meu raster s [[8]] contém apenas 1 camada, então nem todo o mosaico foi importado!

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

Se eu ler cada mosaico separadamente, funcionará:

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

Por que a ferramenta "empilhar" não importa mosaicos inteiros, mas apenas uma banda do mosaico e como é possível organizá-lo?

maycca
fonte

Respostas:

11

Dê uma olhada nlayers(s). O número retornado de camadas será igual a 28 - pelo menos no exemplo acima, com 4 objetos de várias camadas que abrangem 7 camadas cada. A aplicação stacka vários arquivos de várias camadas resulta em um grande objeto 'RasterStack', ou seja, todos os objetos de várias camadas são anexados um ao outro.

Se você gostaria de ter pilhas separadas para cada arquivo, eu recomendaria o uso

s <- lapply(raster_data, stack)

o que resulta em uma lista de objetos 'RasterStack', cada um incluindo 7 camadas, em vez de uma pilha enorme. Você pode acessar camadas específicas, por exemplo, a 2ª camada do terceiro objeto 'RasterStack',

s[[3]][[2]]
fdetsch
fonte