आर्कगिस डेस्कटॉप का उपयोग करके विशिष्ट आकारों में बहुभुज को विभाजित करना?


26

मेरे पास एक आकृति में कई हजार अनियमित आकार के बहुभुज हैं। मैं प्रत्येक बहुभुज को तीन क्षेत्रों में विभाजित करने में सक्षम होना चाहता हूं, और यह निर्दिष्ट करना चाहता हूं कि उन क्षेत्रों का आकार क्या है (वे पिछले कुल क्षेत्र के बराबर हैं)। इससे कोई फर्क नहीं पड़ता कि उप-बहुभुज आकार क्या है, क्योंकि यह दृश्य प्रयोजनों के लिए है।

मैं ऐसा कैसे कर सकता हूं? क्या कोई मानक एल्गोरिथ्म मौजूद है जो मैं उपयोग कर सकता हूं?


एक दृष्टिकोण जो मैंने माना, वह सभी बिंदुओं को प्राप्त करना था जो बहुभुज बनाते हैं। फिर, मैं एक सीधी रेखा का उपयोग करके दो बेतरतीब ढंग से एक साथ जुड़ूंगा, बहुभुज को विभाजित करूंगा, फिर जांचें कि क्या क्षेत्र एक संतोषजनक सहनशीलता के भीतर था। यदि यह बहुत छोटा था, तो मैं एक दिशा में बिंदु बदलूंगा; यदि यह बहुत बड़ा था, तो मैं विपरीत दिशा में एक बिंदु पर बदलूंगा।

जवाबों:


34

इस समस्या के कई वैध समाधान हैं। उनमें से एक आपके विवरण की तरह थोड़ा काम करता है, लेकिन "यादृच्छिक" स्थानों पर बहुभुजों को टुकड़ा करने के बजाय आप गणना की मात्रा को कम करने के लिए डिज़ाइन किए गए तरीके से इसे उद्देश्यपूर्ण तरीके से कर सकते हैं।

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

चलो एल झाडू दिशा के लम्बवत किसी भी उन्मुख लाइन हो। परिभाषित करें f (L) L के दाईं ओर पाया जाने वाला P का क्षेत्रफल है, ऋण a । इन शर्तों में काम करने के लिए है की एक शून्य को खोजने । चूँकि f का विभेदीकरण होने की संभावना नहीं है, लेकिन यह निरंतर है, या तो द्विध्रुवी विधि , धर्मनिरपेक्ष विधि का उपयोग करें , या - मेरा पसंदीदा- Brent की विधि । सभी सरल और अभिसरण की गारंटी है। तर्क के लिए अभिसरण सहिष्णुता के लिए टी का उपयोग करें ।

बस। आइए विचार करें कि यह कोडिंग में क्या जाता है। रूट ढूंढना नियमित है - आप इसके लिए एक सामान्य कोड का उपयोग कर सकते हैं - इसलिए जीआईएस काम कोडिंग एफ के लिए नीचे आता है । ऐसा करना आवश्यक है

1.  Splitting the polygon by a line.
2.  Computing the area of the piece(s) to the right of the line.

दोनों ऑपरेशन लगभग किसी भी वेक्टर-आधारित जीआईएस में कार्यान्वित किए जाते हैं। यदि नहीं, तो आप लाइन के दाईं ओर आधे तल का प्रतिनिधित्व करने वाले एक बहुत बड़े आयत द्वारा लाइन को बदल सकते हैं। चरण 1 बन जाता है

1'. Clip the polygon to the rectangle.

यह वास्तव में एक बुनियादी ऑपरेशन है।

रूट फाइंडिंग के साथ शुरुआत करने के लिए, आपको एक अंतराल खोजने की आवश्यकता होती है जिसमें झूठ बोलने के लिए के शून्य की गारंटी दी जाती है। यह आसान है: लाइन स्वीप की दिशा में बहुभुज के लिफाफे ("बाउंडिंग बॉक्स") को प्रोजेक्ट करें। प्रक्षेपण आप चाहते हैं अंतराल है।

इस सवाल का एक लंबा इतिहास है। मैंने इस एल्गोरिथम को ArcView 3.x के लिए बहुत पहले लागू किया था और पुराने ESRI उपयोगकर्ता मंचों में इसे कई बार वर्णित किया है। गूगल

हाइवे विभाजन बहुभुज साइट: forum.esri.com

विचार-विमर्श के लिए, कोड, संवर्द्धन और विविधताओं के लिंक (जैसे कि वांछित आकार के हिस्सों में बहुभुज को विभाजित करना जो कि यथासंभव कॉम्पैक्ट हैं) और रेखापुंज डेटा के लिए एल्गोरिदम।

यहाँ बताया गया है कि महाद्वीपीय अमेरिकी राज्य प्रत्येक राज्य के नीचे तीसरे भाग के साथ (समान क्षेत्र में प्रक्षेपण) जैसे दिखते हैं। जाहिर तौर पर स्वीप की दिशा लंबवत थी।

वैकल्पिक शब्द


6

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

विभाजित करें


0

आर्कजीआईएस प्रो 2.3 में एक नया उपकरण है जिसे सबडिवीड बहुभुज कहा जाता है ।

यह एक बहुभुज को दिए गए भागों या वांछित भाग क्षेत्र की संख्या को विभाजित / उपविभाजित करने की अनुमति देता है।

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