आर में आईडी द्वारा एक SpatialPolygonsDataFrame सबसेट?


13

मैंने पैकेज gIntersectसे फ़ंक्शन का उपयोग यह rgeosनिर्धारित करने के लिए किया है कि कौन से पॉलीगोन दो स्पैटियलपॉलीगोनडैट्सफ्रेम (स्पैडफैस) में अंतर करते हैं। परिणाम एक तार्किक मैट्रिक्स है, जिसमें sfdf # 1 से बहुभुज ID शामिल है और spdf # 2 से बहुभुज ID को सम्मिलित करता है। मैं इस मैट्रिक्स का उपयोग दो मूल spdfs को कम करने के लिए करना चाहता हूं, जो फ़ंक्शन का उपयोग करने से पहले उन बहुभुजों को छोड़ देता है, जिनमें कोई ओवरलैप नहीं होता है gIntersection। मैं आसानी से तार्किक मैट्रिक्स को ID के दो वैक्टर (प्रत्येक spdf के लिए एक) में बदल सकता हूं जो कम से कम ओवरलैप के साथ उन बहुभुज का प्रतिनिधित्व करता है।

मेरा सवाल है - क्या मैं एक spdf को कम करने के लिए बहुभुज आईडी के वेक्टर का उपयोग कर सकता हूं? यदि हां, तो क्या यह @dataस्लॉट में मूल्यों को सही ढंग से घटाएगा ? मुझे पता है कि मैं आमतौर पर इस सिंटैक्स का उपयोग करके spdfs को कम कर सकता हूं:

spdf[spdf@data$myVariable[someVector], ]

यह आईडी के लिए काम नहीं करेगा, क्योंकि वे spdf सूची संरचना के अंदर बहुत गहरे दबे हुए हैं।

जवाबों:


11

मैट्रिक्स से लौटे हुए आईएनएस को प्रत्येक स्रोत sp ऑब्जेक्ट में पंक्तिनाम के अनुरूप होना चाहिए। डेटा को कम करने के लिए आपको केवल पंक्तिबद्ध स्थिति को अनुक्रमित करने में सक्षम होना चाहिए।

r <- c(1,5,3,9,10)
sp.polys <- sp.polys[r,]

मैं सिर्फ जांच करना चाहता हूं - क्या यह सीधे spdf ऑब्जेक्ट पर भी काम करेगा? (यानी, spdf[r, ])
अल्बर्टो

हाँ, यह sp ऑब्जेक्ट्स पर काम करता है और सूचकांक ID के माध्यम से प्रचार करता है जो सभी स्लॉट ऑब्जेक्ट्स से लिंक करता है, जो @data rownames के अनुरूप है।
जेफरी इवांस

शायद मैं सही से नहीं पढ़ रहा हूँ लेकिन यह थोड़ा गलत है? तुम एक पर निकालने चाहिए स्ट्रिंग r पंक्ति नामों में से, पूर्णांकों का उपयोग कर ordinally निकाल देंगे
MichaelChirico

@MichaelChirico एक ज्ञात पंक्ति स्थिति में लौटने के लिए यह सही है। यदि आप केवल पंक्ति नाम (यों) का मूल्य जानते हैं, तो आप कुछ ऐसा उपयोग करके सूचकांक बना सकते हैं, जिसमें (पंक्तिबद्ध नाम x%% c (1,5)) और, तब तक नहीं जब तक कि एक सच्चे वर्ण स्ट्रिंग को पंक्तिबद्ध करने के लिए असाइन नहीं किया जाता है मानों को उद्धृत करने की आवश्यकता नहीं है। डिफ़ॉल्ट पंक्तिबद्ध नाम 1: n
जेफरी इवांस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.