การนำเข้ารูปภาพแรสเตอร์ซ้อนหลายภาพใน 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]]         

และแรสเตอร์ของฉัน [[8]] มีเพียงชั้นเดียวเท่านั้นดังนั้นจึงไม่มีการนำเข้าโมเสคทั้งหมด!

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

ถ้าฉันอ่านแต่ละโมเสกแยกกันมันใช้งานได้:

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

ทำไมเครื่องมือ "stack" ไม่นำเข้าโมเสคทั้งหมด แต่มีโมเสคเพียงวงเดียวและเป็นไปได้อย่างไรที่จะจัดเรียง

คำตอบ:


11

nlayers(s)มีลักษณะที่ จำนวนเลเยอร์ที่ส่งคืนจะเท่ากับ 28 - อย่างน้อยสำหรับตัวอย่างด้านบนที่มีวัตถุหลายเลเยอร์ 4 ตัวครอบคลุมแต่ละชั้น 7 ชั้น การนำstackไปใช้กับไฟล์หลายเลเยอร์จะส่งผลให้วัตถุ 'RasterStack' ขนาดใหญ่หนึ่งชิ้นกล่าวคือวัตถุหลายชั้นทั้งหมดจะถูกผนวกเข้าด้วยกัน

หากคุณต้องการแยกสแต็คสำหรับแต่ละไฟล์ฉันขอแนะนำให้ใช้

s <- lapply(raster_data, stack)

ซึ่งส่งผลให้รายการวัตถุ 'RasterStack' แต่ละชั้นรวมถึง 7 ชั้นมากกว่าหนึ่งกองใหญ่ จากนั้นคุณสามารถเข้าถึงเลเยอร์เฉพาะเช่นเลเยอร์ที่สองของวัตถุ 'RasterStack' ครั้งที่ 3 ได้

s[[3]][[2]]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.