Nhập nhiều ảnh raster xếp chồng lên nhau trong R?


9

Tôi muốn nhập tất cả các trình quét khảm (mỗi khảm được tạo bởi 7 lớp) từ thư mục được chỉ định vào R. Sau đó truy cập chúng dưới dạng các trình quét đa lớp đơn.

nhập mô tả hình ảnh ở đây

Tôi cũng vậy:

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

và raster s của tôi [[8]] chỉ chứa 1 lớp, vì vậy không phải toàn bộ khảm đã được nhập!

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

Nếu tôi đọc từng khảm riêng biệt, nó hoạt động:

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

Tại sao công cụ "stack" không nhập toàn bộ khảm mà chỉ có một dải khảm và làm thế nào có thể sắp xếp nó?

Câu trả lời:


11

Có một cái nhìn vào nlayers(s). Số lớp được trả về sẽ bằng 28 - ít nhất là đối với ví dụ trên với 4 đối tượng nhiều lớp bao gồm 7 lớp mỗi lớp. Áp dụng stackcho nhiều tệp nhiều lớp dẫn đến một đối tượng 'RasterStack' khổng lồ, tức là tất cả các đối tượng nhiều lớp đơn lẻ được nối với nhau.

Nếu bạn muốn có ngăn xếp riêng cho mỗi tệp, tôi khuyên bạn nên sử dụng

s <- lapply(raster_data, stack)

dẫn đến một danh sách các đối tượng 'RasterStack', mỗi đối tượng bao gồm 7 lớp thay vì một ngăn xếp khổng lồ. Sau đó, bạn có thể truy cập các lớp cụ thể, ví dụ: lớp thứ 2 của đối tượng 'RasterStack' thứ 3, bởi

s[[3]][[2]]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.