Mengimpor beberapa gambar raster bertumpuk di R?

9

Saya ingin mengimpor semua raster mosaik ganda (masing-masing mosaik terdiri dari 7 lapisan) dari folder yang ditunjukkan ke R. Saya kemudian mengaksesnya sebagai raster multilayers tunggal.

masukkan deskripsi gambar di sini

Jadi saya melakukannya:

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

dan raster saya [[8]] hanya mengandung 1 lapisan, jadi tidak seluruh mosaik diimpor!

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

Jika saya membaca setiap mosaik secara terpisah, ini berfungsi:

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

Mengapa "tumpukan" alat tidak mengimpor seluruh mosaik tetapi hanya satu pita mosaik dan bagaimana mungkin untuk mengaturnya?

maycca
sumber

Jawaban:

11

Lihatlah nlayers(s). Jumlah layer yang dikembalikan akan sama dengan 28 - setidaknya untuk contoh di atas dengan 4 objek multi-layer yang masing-masing mencakup 7 layer. Menerapkan stackke banyak file multi-layer menghasilkan satu objek 'RasterStack' besar, yaitu semua objek multi-layer tunggal ditambahkan satu sama lain.

Jika Anda ingin memiliki tumpukan terpisah untuk setiap file, saya sarankan menggunakan

s <- lapply(raster_data, stack)

yang menghasilkan daftar objek 'RasterStack', masing-masing termasuk 7 lapisan daripada satu tumpukan besar. Anda kemudian dapat mengakses lapisan tertentu, misalnya lapisan ke-2 dari objek 'RasterStack' ke-3, oleh

s[[3]][[2]]
fdetsch
sumber