आर में दिए गए रैस्टर की सीमा और सीमा के बहुभुज बनाएं


13

मैं दो बहुभुज बनाना चाहता हूं।

  1. एक मेरे रेखापुंज के आयताकार विस्तार का है। मुझे पता है कि मैं इसका उपयोग करके 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 से 1 तक नहीं हैं)।
18

3
r > -Infबुनियादी है R। क्या c(1,NA,3,NA) > -Infदेखने के लिए कि यह कैसे काम करता है। मैंने एक विकल्प ( reclassify) जोड़ा है । आपका वैकल्पिक काम करता है लेकिन यह बड़ी वस्तुओं के लिए अच्छा नहीं है।
रॉबर्ट हिजमंस

मैं बस अपने कंप्यूटर के rasterToPolygons()भाग की प्रक्रिया का इंतजार कर रहा हूं , और उसके बाद मैं आपके उत्तर का मूल्यांकन करूंगा। -Infबिट के लिए धन्यवाद इसके बहुत उपयोगी होने जा रहा है!
सीएसथ

एक बहुत बड़े रेखापुंज के लिए इसमें कुछ समय लगेगा, या विफल भी हो सकता है। उस मामले में आप पहले उपयोग करने पर विचार कर सकते हैं aggregateक्योंकि आप वैसे भी अंतर नहीं देखेंगे।
रॉबर्ट हिजमंस

aggregate()आर पर चलने के बाद केवल 100 कोशिकाओं के साथ भी , यह संसाधित नहीं हुआ है (16 जीबी रैम से लैस कंप्यूटर)। समस्या यह है कि मुझे सीमा को देशी के रूप में रखने की आवश्यकता है, क्योंकि परिणामी बहुभुज से एक डीईएम को निकालने की आवश्यकता है। अगर मैं अपने रैस्टर को डाउन-सैंपल करता हूं तो मैं उस सीमा को ढीला कर दूंगा। चारों ओर कोई काम?
सीएसथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.