สร้างรูปหลายเหลี่ยมของขอบเขตและขอบเขตของ Raster ที่กำหนดใน R


13

ฉันต้องการสร้างรูปหลายเหลี่ยมสองรูป

  1. หนึ่งในนั้นคือรูปสี่เหลี่ยมผืนผ้าของแรสเตอร์ของฉัน ฉันรู้ว่าฉันสามารถได้รับขอบเขตของการใช้ raster r <- raster("band5.tif") e <- extent(r) plot(e)ให้ฉันนี้ ป้อนคำอธิบายรูปภาพที่นี่

  2. ฉันจะสร้างหนึ่งรูปหลายเหลี่ยมของขอบเขตของแรสเตอร์ที่แสดงด้านล่างได้อย่างไร

นี่คือลักษณะแรสเตอร์ของฉัน:แรสเตอร์ ( "band5.tif")

คำตอบ:


23

นี่คือตัวอย่าง

library(raster)
# example data
x <- raster(system.file("external/test.grd", package="raster"))

ที่จะได้รับขอบเขตเป็นรูปสี่เหลี่ยมผืนผ้า

e <- extent(x)
# coerce to a SpatialPolygons object
p <- as(e, 'SpatialPolygons')  

เพื่อให้ได้รูปหลายเหลี่ยมที่ล้อมรอบเซลล์ที่ไม่ใช่ NA

# make all values the same. Either do
r <- x > -Inf
# or alternatively
# r <- reclassify(x, cbind(-Inf, Inf, 1))

# convert to polygons (you need to have package 'rgeos' installed for this to work)
pp <- rasterToPolygons(r, dissolve=TRUE)

# look at the results
plot(x)
plot(p, lwd=5, border='red', add=TRUE)
plot(pp, lwd=3, border='blue', add=TRUE)

ฉันดูเหมือนจะไม่พบเอกสารในr <- r > -Infส่วนนี้ มันทำอะไรกันแน่? และมันแตกต่างกันvalues(r)[!is.na(values(r))] <- 1(ซึ่งกำหนดตำแหน่งทั้งหมดที่ไม่ใช่ NA ใน r ถึง 1)
csheth

3
r > -InfRเป็นพื้นฐาน ทำc(1,NA,3,NA) > -Infเพื่อดูว่ามันทำงานอย่างไร ฉันได้เพิ่มทางเลือก ( reclassify) ทางเลือกของคุณใช้งานได้ แต่มันไม่เหมาะสำหรับวัตถุขนาดใหญ่
Robert Hijmans

ฉันแค่รอให้คอมพิวเตอร์ของฉันประมวลผลrasterToPolygons()ส่วนนั้นแล้วฉันจะประเมินคำตอบของคุณ ขอบคุณสำหรับ-Infบิตมันจะมีประโยชน์มาก!
csheth

สำหรับแรสเตอร์ที่มีขนาดใหญ่มากอาจใช้เวลาสักครู่หรืออาจล้มเหลว ในกรณีนี้คุณสามารถพิจารณาการใช้ครั้งแรกaggregateเนื่องจากคุณจะไม่เห็นความแตกต่าง
Robert Hijmans

แม้จะมีเซลล์เพียง 100 เซลล์หลังจากเรียกใช้งานaggregate()on แต่ก็ยังไม่ได้ประมวลผล (คอมพิวเตอร์ที่มี RAM ขนาด 16 GB) ปัญหาคือฉันต้องทำให้ขอบเขตเป็นดั้งเดิมที่สุดเท่าที่จะทำได้เนื่องจากต้องมีการแยก DEM จากรูปหลายเหลี่ยมผลลัพธ์ ถ้าฉันลดตัวอย่างแรสเตอร์ของฉันฉันจะทำให้ขอบเขตนั้นหลวม มีงานอะไรอีกไหม?
csheth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.