शाखित बहुभुज आकार का पता लगाना?


13

मेरे पास लाखों पॉलीगॉन के साथ एक वेक्टर परत है जो निरंतर कवरेज बना रही है। मुझे उनके आकार के अनुसार उन्हें वर्गीकृत करने की आवश्यकता है। मैं पहले से ही परिदृश्य पारिस्थितिकी (जैसे कि कॉम्पैक्टनेस ( 4piA / P ^ 2 ), माध्य चौड़ाई ( 2A / P ), आकार संख्या ( P / sqrt (A) ) से कई आकार अनुक्रमणिकाओं का उपयोग कर रहा हूं, मैंने यह उत्तर भी गणना के दौर (कॉम्पैक्टनेस) की गणना के लिए देखा है बहुभुज?

मेरी समस्या यह है कि ये सभी मैट्रिक्स केवल क्षेत्र और परिधि के कुछ अनुपात का उपयोग कर रहे हैं। यहां तक ​​कि फ्रैक्टल आयाम सूचकांक केवल क्षेत्र और परिधि ( 2ln (0.25P) / ln (A) ) का उपयोग कर रहा है। लेकिन मैं एक ही क्षेत्र और परिधि के साथ दो बहुभुजों को कैसे अलग कर सकता हूं लेकिन बिल्कुल अलग आकार? इस तरह की बहुभुज A:

शाखित बहुभुज बनाम घुमावदार पट्टी

जो मैंने एक ही क्षेत्र और परिधि के साथ घुमावदार पट्टी बी के साथ खींचने की कोशिश की, मेरे सभी ज्ञात सूचकांक उनके लिए समान होंगे। लेकिन मेरे लिए जटिल शाखाओं वाले आकृतियों से सरल स्ट्रिप्स (घुमावदार जैसे कि नए चाँद सहित) को अंतर करना बहुत महत्वपूर्ण है।

मैं जानबूझकर बहुभुज बी को एक घुमावदार पट्टी के रूप में दिखाता हूं और एक सीधी पट्टी नहीं क्योंकि मैं संबंधित सर्कुर्केल सूचकांक के बारे में जानता हूं जो सीधे लम्बी आकृतियों का पता लगाता है, लेकिन मेरे पॉलीगनों में भी एक ही खतना हो सकता है। यहां तक ​​कि अगर मैं उत्तल पतवार का निर्माण करता हूं और Apolygon / Aconvex क्षेत्रों के अनुपात की गणना करता हूं , तो यह यहां बहुत समान हो सकता है।

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

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

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

मैं गणितीय समाधान / एल्गोरिदम का स्वागत करता हूं, जिसे मैं बाद में पायथन में लागू करूंगा।


1
आपको बहुत अजगर की जरूरत नहीं है। प्रयत्न ! आकार!। उत्तल पतवार ()। क्षेत्र कैलकुलेटर में सममितता (आकार!)। एक छोटी सबसेट कॉपी पर पहले प्रयास करें। सही सिंटैक्स के लिए आर्कपी ज्यामिति सहायता देखें।
फेलिक्सिप

यह एक बड़ा सवाल हो सकता है लेकिन फिलहाल आप यह नहीं पूछकर कई सवाल पूछ रहे हैं कि क्या आप QGIS या ArcGIS डेस्कटॉप के बारे में पूछ रहे हैं और फिर पायथन में भी फेंक रहे हैं। एक बार जब आप यह निर्दिष्ट कर लेते हैं कि आपने क्या प्रयास किया है, तो संभावित उत्तरदाताओं के लिए यह आसान है कि आप कहाँ अटके हैं। मेरा सुझाव है कि अपना पहला उत्तर देने से बचने के लिए QGIS पर ध्यान केंद्रित करें।
PolyGeo

1
मेरे पास Esri जियोडेटाबेस में डेटा है क्योंकि एक शेपफाइल पहले से ही 2 जीबी से अधिक था। मैं इस बारे में कुछ कर सकता था अगर QGIS या कहीं और काम करने का उपाय है। लेकिन मैं एक विशिष्ट सॉफ्टवेयर के अंदर नहीं पूछ रहा हूं। मैं एक मीट्रिक के बारे में पूछ रहा हूं, एक विधि जो गणितीय रूप से जटिल सीमा (शाखित) के साथ एक आकृति का पता लगाने का तरीका है। 1 सवाल। एक सूत्र के साथ वैज्ञानिक लेख भी ठीक होगा, मैं सोचूंगा कि इसे खुद कैसे लागू किया जाए।
नाडिया

1
मेरा पहला विचार आपके जैसा ही था, मूल और उत्तल (या अवतल) पतवार से मूल घटने के बाद छोड़े गए बहुभुजों की संख्या और आकार के अंतर को देखते हुए (अल्फा आकृतियों को भी देखें)।
user2856

1
यदि केवल कंकाल तेजी से गणना करने के लिए पर्याप्त था तो मैं 4 ए / पीएल, क्षेत्र, परिधि की गणना करने के लिए उपयोग करूंगा, कॉम्पैक्टनेस के लिए कंकाल के फार्मोस्ट नोड्स के बीच की लंबाई। वही सबसे बड़े खुदा सर्कल पर लागू होता है।
फेलिक्सिप सिप

जवाबों:


11

आप निम्नलिखित विधि पर एक नज़र डाल सकते हैं: अपने बहुभुजों को कंकाल करें और एक अद्वितीय स्रोत बहुभुज आईडी के साथ अपने मूल बहुभुज से संबंधित लाइन प्रकार की विशेषताओं पर काम करें। मुझे लगता है कि ऐसा करने के लिए कुछ अनुमान हैं (उदाहरण के लिए, जब एक पॉलीलाइन को वास्तविक केंद्र रेखा के रूप में माना जाता है: पॉलीलाइन के लिए न्यूनतम लंबाई केंद्र की स्थिति के योग्य होने के लिए)। जब एक स्रोत बहुभुज के लिए केंद्र की संख्या अधिक होती है तो 1, तब यह शाखाबद्ध होता है।

जब एक केंद्र रेखा तक सफाई की जाती है, तो एक बहुभुज बहुभुज में कई गुना रेखाएँ होंगी जबकि एक सीधी बहुभुज के केंद्र में केवल एक बड़ी रेखा हो सकती है (वास्तव में मानव व्याख्या)।

उदाहरण :

  • जब आप एक Y अक्षर खींचते हैं, तो आप कम से कम 2 निरंतर स्ट्रोक (= 2 पॉलीइन्स) का उपयोग करते हैं, इसलिए यह शाखित है क्योंकि स्ट्रोक की न्यूनतम संख्या> 1 है।
  • जब आप L अक्षर बनाते हैं, तो आप कम से कम 1 निरंतर स्ट्रोक का उपयोग करते हैं। यह शाखित नहीं है।

इस तर्क के और उदाहरण:

  • जब आप A: 2 स्ट्रोक लेते हैं तो यह शाखित होता है
  • जब आप एक B: 3 स्ट्रोक लेते हैं तो यह शाखित होता है
  • जब आप एक C: 1 स्ट्रोक खींचते हैं तो यह शाखित नहीं होता है
  • आदि

मैंने कुछ भी कोशिश नहीं की है, सिर्फ तर्क की कोशिश कर रहा हूं, लेकिन मुझे लगता है कि यह काम कर सकता है।

देखें: QGIS / पायथन में कंकाल वाले वैक्टर या http://postgis.net/docs/ST_StrectSkeleton.html

या

उदाहरण

स्रोत: PostGIS / पायथन में एक कॉम्प्लेक्स-बहुभुज की केंद्र-रेखा निकालना

संपादित करें: मामलों के सी एंड डी के लिए, आपको पहले से ही बी आकार (गैर शाखित) को फ़िल्टर करने की आवश्यकता है।

  • सुनिश्चित करें कि एक अद्वितीय आईडी केंद्र रेखा और स्रोत बहुभुज को जोड़ता है।
  • अपने बहुभुजों को पॉलीइन्स में परिवर्तित करें
  • नियमित बिंदुओं के साथ सेंटरलाइन पॉलीलाइन और बॉर्डरलाइन पॉलीलाइन को घनीभूत करें (बाद में स्मृति समस्याओं से बचने के लिए बहुत अधिक नहीं लेकिन अनियमित बिट्स को "पकड़ने" के लिए पर्याप्त है।
  • केंद्र रेखा और सीमा रेखा के बिंदुओं के बीच एक दूरी मैट्रिक्स बनाएँ
  • केवल उन मैट्रिक्स लाइनों में रखें जहाँ ID_centerline = ID_borderline है
  • मानक विचलन मान रखने के लिए आँकड़े बनाएँ
  • उच्च एसडी मानों के लिए इंगित करने के लिए एक बाध्य मान सेट करें कि यह एक गैर नियमित समोच्च है और प्रत्येक अद्वितीय आईडी के लिए आवश्यक संकेतक बनाएं
  • अद्वितीय आईडी के आधार पर फ़ील्ड से जुड़कर मूल बहुभुज पर संकेतक वापस लाएं।

इस विचार के लिए धन्यवाद, मैं
nadya

बस, मेरे बहुभुज C और D को अलग करने की समस्या बनी रहेगी
nadya

आपको विभिन्न मामलों के लिए अलग-अलग तरीकों की आवश्यकता हो सकती है और काम को विभाजित कर सकते हैं। एक बार जब आपके पास गैर शाखित बहुभुज (बी) होता है, तो आप B को C और D. खोजने के लिए परिष्कृत कर सकते हैं। समस्या यह है कि मैं नहीं देखता कि आप D से C को अलग करने के लिए किस तर्क का उपयोग करते हैं। criterias।
गिसनसाइड

1
C और D के बीच अंतर यह प्रतीत होता है कि C में, बहुभुज की भुजाएँ केंद्र रेखा से लगभग एक समान दूरी पर हैं, जबकि D में भुजाएँ केंद्र रेखा से एक समान दूरी पर हैं।
csk

1
@csk मैं वह देखता हूं। मैं अनुवाद करने का अनुमान लगाता हूं कि कोड में केंद्र रेखा और सीमा रेखा के बीच की दूरी के आंकड़ों की गणना की जाएगी। बॉर्डर पॉलीलाइन को अधिक बिंदुओं से सघन करके फिर इस बॉर्डर को पॉइंट्स में परिवर्तित करना + केंद्रलाइन पर समकक्ष नौकरी से दूरी बनाना इस व्यवहार पर आंकड़े देगा। यदि मानक विचलन अधिक है, तो संभवतः आकार अनियमित होगा। मुश्किल है कि कैसे बहुभुज के हजारों पर ऐसा करने के लिए ... वहाँ अच्छी चुनौती
5
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.