आर्कगिस डेस्कटॉप में बहुभुज को ओवरलैप करना और उसकी गणना करना?


17

आप ओवरलैप करने वाले बहुभुजों के साथ एक वेक्टर परत कैसे लेते हैं और इसे एक रेखापुंज में बदल देते हैं, जहाँ प्रत्येक कोशिका उस कोशिका से युक्त बहुभुजों की संख्या गिनती है?

हम 1976 से 2000 के बीच आग से जलने वाले क्षेत्रों के बहुभुजों को देख रहे हैं और यह देखना चाहते हैं कि प्रत्येक रैस्टर सेल में कितनी आगें होंगी।

जवाबों:


22

इसे तीन चरणों में करें: बहुभुजों को उनके घटक भागों में तोड़ें, ओवरलैप्स गिनें और रेखापुंज में बदलें। यह प्रत्येक बहुभुज को एक रेखापुंज में परिवर्तित करने और उन चूहों को मिलाने की संभावित विशाल कम्प्यूटेशनल लागत से बचता है।

  1. Union( Geoprocessingमेनू में) बहुभुज को उनके भागों में तोड़ता है।

    दुर्भाग्य से, प्रत्येक ओवरलैप को आउटपुट में डुप्लिकेट किया गया है: इसमें प्रत्येक मूल बहुभुज को कवर करने के लिए एक समान प्रतिलिपि है। इसलिये

  2. Dissolve(फिर से Geoprocessingमेनू में) अतिव्यापी भागों को मर्ज करेंगे, बशर्ते आप उन्हें विशिष्ट रूप से पहचानने का एक तरीका पा सकते हैं। संवाद के माध्यम से पढ़ें: अंत की ओर, आपके पास "आंकड़ों की गणना" करने का विकल्प होगा। किसी भी क्षेत्र को चुनें, जिसने मूल बहुभुजों की पहचान की हो और एक गिनती के लिए पूछ सकते हैं

    कई मामलों में बहुभुज क्षेत्र और परिधि का संयोजन विशिष्ट रूप से भागों की पहचान करेगा। यदि नहीं, तो आप अतिरिक्त फ़ील्ड में अधिक ज्यामितीय गुण जोड़ सकते हैं, जैसे कि केंद्रक के निर्देशांक, जब तक कि आपने प्रत्येक सुविधा को अलग करने के लिए पर्याप्त जानकारी संचित न कर ली हो।

    परिणामी परत में प्रत्येक बहुभुज ओवरलैप के लिए एक विशेषता होती है और कुछ प्रकार के "काउंट" फ़ील्ड में ओवरलैप की संख्या की गिनती होती है।

  3. विशेषताओं के लिए "गणना" फ़ील्ड का उपयोग करके इसे एक रेखापुंज में परिवर्तित करें।


उदाहरण के लिए, यहां कुछ अतिव्याप्त बहुभुज और उनके पहचानकर्ता दिखाए गए हैं जिनमें विशेषता तालिका है:

यहाँ छवि विवरण दर्ज करें

दूसरे चरण के बाद हमारे पास प्रत्येक ओवरलैपिंग क्षेत्र के लिए एक गणना के साथ एक रिकॉर्ड है जिसे पहले से ही ओवरलैप की मात्रा का प्रतीक करने के लिए उपयोग किया जा सकता है:

यहाँ छवि विवरण दर्ज करें

बाकी आसान है - और यह सिर्फ एक है एकल रैस्टराइज़ेशन आपरेशन।


यह वेक्टर विधि महान काम करती है, सिवाय इसके कि जब सीमित मेमोरी वाले कंप्यूटर पर कई
ओवरलैप्स के

@ जब भी आरकेजीआईएस की तुलना में अधिक बहुभुज होते हैं, तो डेटासेट को उन भागों में विभाजित कर सकते हैं जो इसे संसाधित कर सकते हैं। आउटपुट कई आपदाएं होंगी - लेकिन उनमें से हजारों या लाखों नहीं - जो कि सीधे योग हैं। उपयोग करने Unionका एक और लाभ यह है कि लगभग समान वर्कफ़्लो के साथ यह उस स्थिति को संबोधित कर सकता है जहां बहु-डेटासेट में पॉलीगॉन रहते हैं (जो आमतौर पर एक खराब डेटाबेस डिज़ाइन है लेकिन दुर्भाग्य से सामान्य है): एक बार में सभी इनपुट डेटासेट को बस एक करता है।
whuber

@ccn (जारी) आप जिस बिंदु को लाते हैं वह इस तक नीचे आता है: जब पॉलीगन्स को व्यवस्थित करना और रैस्टर ऑपरेशंस का उपयोग करना बेहतर होता है तो वेक्टर ऑपरेशन ( union) के बाद रैस्टराइजेशन का उपयोग करके उन्हें मर्ज करें ? जब बहुत अधिक वर्टीकल के साथ उन्हें एंडोर्स किया जाता है, तो वेक्टर ऑपरेशंस ज़रूरत से ज़्यादा विस्तार के साथ डिजिटाइज़ हो जाते हैं। इन चरम परिस्थितियों में रेखापुंज दृष्टिकोण बेहतर हो सकता है (हालांकि पहले बहुभुज को सरल बनाना एक बेहतर विकल्प हो सकता है)। हालांकि, अन्य सभी स्थितियों में, प्रत्येक बहुभुज को अलग से व्यवस्थित करना कंप्यूटर और मानव समय की भारी बर्बादी है ।
whuber

1
वेक्टर आधारित समाधान के लिए +1। यहां चीजों को परिप्रेक्ष्य में रखने के लिए, जला हुआ परिधि डेटा कभी भी बहुत बड़ा नहीं होता है। उदाहरण के लिए, 1984 - 2010 के लिए पूरे MTBS बर्न परिधि डेटासेट (USA) अलास्का सहित ~ 19000 बहुभुज शामिल हैं। या तो एक वेक्टर या रेखापुंज आधारित दृष्टिकोण ठीक काम करेगा।
हारून

@Aaron परिप्रेक्ष्य के लिए धन्यवाद। किसी भी उचित रिज़ॉल्यूशन (जैसे, 100 मी) पर आपको एक बार में संयुक्त राज्य अमेरिका में करने के लिए, आपको 50000 कॉलम और 30000 पंक्तियों के 1,500,000,000 सेल युक्त पंक्तियों की आवश्यकता होगी। 19,000 ऐसी आपदाओं का निर्माण - यहां तक ​​कि संपीड़न में निर्मित के लिए लेखांकन - और फिर 19,000 * 1500000000 = लगभग 30000 बिलियन अतिरिक्त प्रदर्शन करना - कुछ समय की आवश्यकता होगी! यदि इसके बजाय प्रत्येक बहुभुज का उपयोग किया जाता है, तो कहें, 100 कोने (जो बहुत विस्तृत हैं), संघ में 1,900,000 कोने शामिल हैं और एक ओ (एन लॉग (एन)) ऑपरेशन है; सिद्धांत रूप में (लेकिन ArcGIS :-) में नहीं है जो 1 सेकंड से कम समय लेता है।
whuber

1

निम्नलिखित पोस्ट में कुछ इसी तरह का प्रश्न है जिससे आप संबंधित समाधान पा सकते हैं: वेक्टर बहुभुज आकार के आकार से ओवरलैप की एक रेखीय सतह बनाना?

इस कम्प्यूटेशनल रूप से तेज़ और सरल रेखापुंज दृष्टिकोण के लिए, आपको (1) अतिव्यापी बहुभुजों को अलग-अलग परतों में अलग करना होगा (संभवतः अग्नि बहुभुजों के लिए वर्ष के हिसाब से ) का उपयोग करके एक इटैलियन या स्क्रिप्ट टूल के साथ मॉडलब्रेन में एट्रीब्यूट्स का चयन करें , (2) प्रत्येक को रूपांतरित करें। MAXIMUM_COMBINED_AREA सेल असाइनमेंट (समान सेल आकार , स्नैप रेखापुंज को सुनिश्चित करने और यह सीमा बहुभुज के पूरे सेट के समान ही रहती है) के साथ बहुभुज से रेखापुंज तक - एक स्थिर क्षेत्र मान (जैसे वर्ष क्षेत्र या पंक्तियों का उपयोग करें जिसमें सभी 1s हैं) का उपयोग करना (स्वचालित रूप से मदद करने के लिए पुनरावृत्ती या पायथन लिपि के साथ ModelBuilder का उपयोग करने के लिए) और फिर (3) निम्नलिखित स्थानिक विश्लेषक उपकरण लागू करें: सेल सांख्यिकी - अगर प्रत्येक रेखापुंज में वर्ष या SUM जैसे सभी मान एक अद्वितीय मान हैं, तो आँकड़े_टाइप VARIETY का उपयोग करें यदि सभी रेखापुंज सेल मान 1s हैं - NoData को अनदेखा करने के लिए जांचना सुनिश्चित करें।

मध्यवर्ती रेखापुंज (पूर्व रूपांतरण से) हटाए जा सकते हैं या बाद के रेखापुंज विश्लेषण में उपयोग करने के लिए तैयार हैं।


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