คำตอบ:
นี่คือตัวอย่าง
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 > -Inf
R
เป็นพื้นฐาน ทำc(1,NA,3,NA) > -Inf
เพื่อดูว่ามันทำงานอย่างไร ฉันได้เพิ่มทางเลือก ( reclassify
) ทางเลือกของคุณใช้งานได้ แต่มันไม่เหมาะสำหรับวัตถุขนาดใหญ่
rasterToPolygons()
ส่วนนั้นแล้วฉันจะประเมินคำตอบของคุณ ขอบคุณสำหรับ-Inf
บิตมันจะมีประโยชน์มาก!
aggregate
เนื่องจากคุณจะไม่เห็นความแตกต่าง
aggregate()
on แต่ก็ยังไม่ได้ประมวลผล (คอมพิวเตอร์ที่มี RAM ขนาด 16 GB) ปัญหาคือฉันต้องทำให้ขอบเขตเป็นดั้งเดิมที่สุดเท่าที่จะทำได้เนื่องจากต้องมีการแยก DEM จากรูปหลายเหลี่ยมผลลัพธ์ ถ้าฉันลดตัวอย่างแรสเตอร์ของฉันฉันจะทำให้ขอบเขตนั้นหลวม มีงานอะไรอีกไหม?
r <- r > -Inf
ส่วนนี้ มันทำอะไรกันแน่? และมันแตกต่างกันvalues(r)[!is.na(values(r))] <- 1
(ซึ่งกำหนดตำแหน่งทั้งหมดที่ไม่ใช่ NA ใน r ถึง 1)