पॉलीगन्स को इंटरसेप्ट करते समय रेजो संबंधित मूल्यों को गिरा देता है


11

मैं दो SpatialPolygonsDataFrames को इंटरसेप्ट करने की कोशिश कर रहा हूं और परिणामस्वरूप SpatialPolygonsDataFrame प्राप्त कर रहा हूं। दुर्भाग्य से, gIntersectionफ़ंक्शन का उपयोग करके rgeos(जो प्रभावशाली तरीके से पॉलीगॉन को तेज़ी से काम करता है), मैं संबंधित डेटाफ़्रेम को पुनः प्राप्त नहीं कर सकता। निम्नलिखित उदाहरण पर विचार करें:

> fracPoly <- gIntersection( toSingle, fromSingle )
> class(toSingle)
[1] "SpatialPolygonsDataFrame"
> class(fromSingle)
[1] "SpatialPolygonsDataFrame"
> class(fracPoly)
[1] "SpatialPolygons"

मैं एक रैपर फंक्शन लिख सकता हूं, जो ट्रांसफर का काम संभालता है data.frames, लेकिन सभी चेकिंग को सही तरीके से कर पाना एक मामूली दर्द होगा और इससे पहले कि मैं यह उम्मीद कर रहा था कि कोई भी पुष्टि कर सकता है कि कोई बेहतर तरीका नहीं है या मुझे दूसरे फंक्शन की ओर इशारा करना है (या विकल्प के लिए gIntersection) जो मुझे संबद्ध बनाए रखने की अनुमति देगा data.frames

अपडेट करें

आगे के प्रतिबिंब पर, यह बहुत ही जानबूझकर व्यवहार हो सकता है gIntersection। आखिरकार, दो एसपीडीएफ में, जिसका डेटा.फ्रेम आप पास करते हैं? इसलिए मुझे एक रैपर लिखना पड़ सकता है जो दोनों को मिला देता है।


1
आप अपने पोलगनों को कैसे लोड कर रहे हैं - readShape * या readOGR? मुझे GIntersection के साथ अजीब व्यवहार मिलता है, इस बात पर निर्भर करता है कि मैंने किस लाइब्रेरी का उपयोग SPDFs को लोड करने के लिए किया है, जो कि मैंने नीचे नहीं किया है।
Simbamangu

@ सिंबांगु दिलचस्प। मैं readhapePoly का उपयोग कर रहा हूँ और फिर एक data.frame में विलय कर रहा हूँ ....
अरी बी। फ्राइडमैन

GIntersection SHOULD डेटा देता है। अतिव्यापी क्षेत्रों के लिए मर्ज किए गए वर्कफ़्लो - अगर मैं वेक्टर चलाऊं। इस?
सिमबंगु

खैर अगर यह होना चाहिए तो मैं स्टम्प्ड हूँ। मैंने पहले से ही अपने कोड को हाथ से डेटा.फ्रेम को मर्ज करने के लिए फिर से लिखा था और उन्हें वापस में काटा, इसलिए मैं अब इस पर कोई और समय बिताने नहीं जा रहा हूं। लेकिन संकेत है कि शेपफाइल मामलों में पढ़ने वाला फ़ंक्शन सहायक है।
अरी बी। फ्रीडमैन

1
यह स्पष्ट रूप से एक उत्तर नहीं है, लेकिन मेरे पास एक टिप्पणी छोड़ने के लिए पर्याप्त बिंदु नहीं हैं ... अरी, मैं सोच रहा था कि क्या आप rgeos उपरिशायी कार्यों के बाद चर निकालने के लिए अपने कोड का हिस्सा साझा करेंगे। मुझे परेशानी का सामना करने के लिए अपने सिर को एक अच्छे तरीके से लपेटने में परेशानी हो रही है, जैसे कि gUnion जैसे विभिन्न rgeos संचालन से मूल बहुभुज आईडी को बनाए रखने के लिए ...
jed.a.long

जवाबों:


2

कुछ प्रोजेक्ट के लिए मुझे भी यही ज़रूरत थी। रखने की तुलना में बहुत अधिक data.frame, हमें आउटपुट ज्यामिति प्रकार को प्रबंधित करने के लिए आगे कोड रखना पड़ा, और कुछ पूर्ण चौराहे वाले जियोप्रोसेस के लिए कुछ सफाई (जैसे स्वच्छ ज्यामिति संग्रह) पर आगे बढ़ना पड़ा। यदि आपको अभी भी R में ऐसा कार्य करने की आवश्यकता है, तो आप RFigisGeo पैकेज को आज़मा सकते हैं :

#install RFigisGeo
require(devtools) 
install_github("RFigisGeo", "openfigis")
require(RFigisGeo)

#compute intersection
result <- getIntersection(features1, features2)

आपके और @ बर्नडव के उत्तर दोनों ऐसे दिखते हैं जैसे वे मेरी समस्या का समाधान करेंगे। धन्यवाद! यह एक चिह्नित करने के बाद से यह पहली बार आया था।
अरी बी। फ्रीडमैन

10

अभिकर्मक का व्यवहार डिजाइन द्वारा किसी भी अंतरित डेटा को पारित नहीं करना है:

चौराहे स्थानिक वस्तुओं के बीच कोई सामान्य मेल नहीं होने के कारण, विशेषताओं पर किसी भी मनमाने संचालन के लिए अज्ञात उपयोगकर्ता के इरादों के बारे में धारणा की आवश्यकता होती है। यही कारण है कि कोई डेटा स्लॉट के माध्यम से पारित किया जाना चाहिए ...

... gIntesection () का डिज़ाइन असंगत है, क्योंकि केवल उपयोगकर्ता ही यह जान सकता है कि उन संस्थाओं की विशेषताओं के साथ क्या करना है जिनके पास उनके ज्यामितीय परिवर्तन हैं। विभिन्न उपयोगकर्ता अलग-अलग धारणाएं बना सकते हैं, लेकिन इंटरसेक्टिंग जियोमेट्री की आईडी से गुजरने के अलावा कोई सामान्य समाधान नहीं है, जैसा कि पंक्ति में किया गया है। नाम () तंत्र।

मेरे आश्चर्य करने के लिए, रेखापुंज पैकेज में एक चौराहे का कार्य होता है, जो बस प्रतिच्छेदन करता है और साथ ही डेटा को सौंपता है।

रेखापुंज पैकेज में कुछ कार्य होते हैं जो विशेषता डेटा को संभालने का प्रयास करके रागों का विस्तार करते हैं। इस मामले में, रेखापुंज :: प्रतिच्छेदन और यहां कार्यों की सूची देखें: "रास्टर-पैकेज" (अनुभाग XIV)

इस पर मुझे पूरी जानकारी मिली: http://r-sig-geo.2731867.n2.nabble.com/Intended-usage-of-gIntersection-td7587120.html


0

उन लोगों के लिए (मेरे जैसे) जिनके लिए उपरोक्त उत्तर काम नहीं करते थे, यहां लिंक बताती है कि आप इस सटीक काम को रेखापुंज के साथ कर सकते हैं।

आर में दो पॉलीगोन को क्लिप करते समय मैं सभी विशेषता डेटा कैसे बनाए रख सकता हूं?

मैं एक SpatialPolygons आकार के साथ एक SpatialPointsDataFrame फसल के लिए इसका इस्तेमाल किया; यह मूल डेटा को बनाए रखते हुए, SpatialPointsDataFrame का एक फसली / क्लिप्ड संस्करण बनाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.