QGIS का उपयोग कर आसन्न बहुभुज को सरल बनाना ज्यामितीय उपकरण को सरल बनाएं


11

मेरे पास 200,000 पॉलीगॉन के साथ एक बड़ा शेपफाइल है, लेकिन फ़ाइल उस एप्लिकेशन के लिए बहुत बड़ी है जो इसका उपयोग करेगी। मैं इन बहुभुजों का सामान्यीकरण करना चाहता हूं और बहुत छोटी फाइल बनाना चाहता हूं।

मैंने QGIS में "सरलीकृत ज्यामितीय" टूल का उपयोग करके ऐसा करने की कोशिश की है। मैंने अपने शेपफाइल के बहुत छोटे हिस्से पर यह कोशिश की है और मैं परिणामों से खुश हूं लेकिन छोटी समस्या है जिसे मैं नहीं जानता कि कैसे हल किया जाए। मैंने समस्या दिखाने के लिए चित्र को जोड़ा है।

सफेद सीमाएँ सरलीकरण से पहले की सीमाएँ हैं। लाल सीमाएं सरलीकरण के बाद हैं। समस्या क्षेत्रों को नारंगी रंग से परिचालित किया जाता है। जैसा कि आप देख सकते हैं "सरलीकृत सीमाएं" में कुछ क्षेत्र शामिल हैं जो सरलीकरण के बाद पिछले बहुभुजों में से किसी से संबंधित नहीं हैं।

मैं इस शेपफाइल को सरल कैसे बनाऊं और बहुभुज के बीच एक ही लाइन के रूप में आम सीमाओं को बनाए रखूं और सरलीकरण के बाद बनाए गए क्षेत्रों को समाप्त कर दूं?

QGIS में सरलीकृत बहुभुज

अतिरिक्त जानकारी:

सुझाए गए निर्देशों का पालन करने के बाद

  1. बहुभुज को लाइनों में बदलें
  2. लाइनों को सरल बनाएं
  3. पॉलीगॉन पर वापस लाइनों को परिवर्तित करें

मुझे निम्नलिखित परिणाम मिले। यह पहले की तुलना में थोड़ा बेहतर है लेकिन फिर भी मुझे मूल बहुभुजों के बाहर के क्षेत्र मिलते हैं (नीचे दी गई तस्वीर में सफेद क्षेत्र देखें)।

@ और ने सुझाव दिया कि मैं प्रत्येक पंक्ति को आसन्न बहुभुज के साथ जोड़ता हूं लेकिन मुझे नहीं पता कि यह QGIS में कैसे किया जाए।

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

मैं अभी भी बहुभुज प्रक्रिया को सरल बनाने की कोशिश कर रहा हूं। मैंने इस पोस्ट में सुझाए गए निर्देशों का पालन किया है और जब मुझे लगा कि मुझे स्वीकार्य परिणाम मिल गए हैं तो एक और समस्या सामने आई है। नीचे मैंने परिणामों की छवियों के साथ क्या किया, इसका सारांश है। QGIS में PROCESSING टूलबॉक्स का उपयोग करके सभी चरणों का प्रदर्शन किया गया है।

  1. सबसे पहले, मैंने बहुभुज को लाइनों में परिवर्तित किया
  2. दूसरा, मैंने ब्रेक विकल्प के साथ v.clean का उपयोग करके लाइनों को साफ किया। इसके परिणामस्वरूप स्वच्छंद क्षेत्र और त्रुटिपूर्ण लायर बने। एरर लेयर (प्रदान की गई छवि पर हरे रंग की डॉट्स) में हर लाइन चौराहे पर ग्रीन डॉट है। मुझे इसका मतलब नहीँ पता।
  3. तीसरा, मैंने "SIMPLIFY GEOMETRY" टूल (छवियों में लाल रेखाओं के परिणामस्वरूप) का उपयोग करके लाइनों को सरल बनाया। सरलीकृत लाल रेखाओं और मूल नारंगी रेखाओं की तुलना में मैं परिणाम से खुश हूं।
  4. चौथा, मैं "PROCESSING" में "Polygonize" टूल का उपयोग करके पॉलीगनों में लाइनों को वापस बदलना चाहता था और ऐसे परिणाम मिले जिनकी मुझे उम्मीद नहीं थी (एक छायांकित डार्क ऑलिव कलर पॉलीगॉन के साथ दूसरी छवि)। यह बहुभुज कनेक्टेड त्रुटि परत चौराहों जैसा दिखता है और सरलीकृत लाइनों की अनदेखी करने वाले बहुभुज के पूरी तरह से अलग सेट बनाता है।

क्या कोई समझा सकता है कि यहां क्या गलत हुआ?

लाल सरलीकृत लाइनों को सरलीकृत बहुभुजों में ठीक से परिवर्तित क्यों नहीं किया गया?

जैसा कि आप देख सकते हैं कि मैं जीआईएस विशेषज्ञ नहीं हूं, लेकिन मुझे खुद ऐसा करने की जरूरत है। मुझे नहीं पता कि मैं समाधान से बहुत दूर हूं, लेकिन यह निराशाजनक है कि मैं सरलीकृत लाइनों को देख सकता हूं जो मुझे स्वीकार्य है कि मैं क्या करना चाहता हूं, लेकिन उन्हें पॉलीगोन में परिवर्तित नहीं कर सकता।

यहां प्रक्रिया के अंतिम दो चरणों के परिणामों के साथ दो चित्र दिए गए हैं:

सरलीकृत लाइनें और मूल लाइनें

Plygonized सरलीकृत लाइनों के परिणाम


@nhopton ऑन पॉलीगैनिज़र वेबपेज प्लगइन्स .qgis.org/ plugins/ Polygonizer यह कहता है कि यह "लाइनों को इंटरसेक्ट करने से पॉलीगॉन बनाता है"। इससे पता चलता है कि जब भी कोई लाइन चौराहा होता है (लेकिन शायद मेरी व्याख्या गलत है) बहुभुज बनाए जाएंगे। मुझे उन अंतरालों से छुटकारा पाने की आवश्यकता है जो "सरल ज्यामितीय" उपकरण का उपयोग करते समय बनाए गए थे और यदि पॉलीगोनाइज़र इसे कर सकता है तो मैं बहुत जल्दबाजी करूंगा।
डेविड

इसके बारे में सोचते हुए, आपकी मूल बहुभुज परत को समस्याओं के बिना सरल करना चाहिए। यदि यह ऐसा नहीं कर रहा है, तो मुझे लगता है कि इसका मतलब है कि मूल डेटा में आपके पास खराब बहुभुज हैं। बहुभुज जो थोड़ा ओवरलैप करते हैं या जिनके बीच छोटे स्थान होते हैं। समस्या क्षेत्रों पर ज़ूम-इन करके देखें कि क्या आपको ऐसा कुछ मिल सकता है। एन।
नेपटन

टोपोलॉजी को संरक्षित करने का एक अच्छा तरीका @radouxju द्वारा सुझाए गए वर्कफ़्लो में है (केंद्रक गणना को छोड़कर जो आवश्यक नहीं है) और मेरे जवाब में प्रसंस्करण मॉडल में प्रतिनिधित्व किया गया है। वैकल्पिक रूप से, मुझे लगता है कि GRASS v.generalizeएक और बढ़िया विकल्प है। उम्मीद है की यह मदद करेगा।
एंटोनियो फाल्कियानो

संबंधित प्रश्न: gis.stackexchange.com/questions/20799/…
simon04

जवाबों:


8

मुझे डिफ़ॉल्ट मानों का उपयोग करके प्रसंस्करण टूलबॉक्स से GRASS v.generalize का उपयोग करके एक बहुत अच्छा परिणाम मिला:

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

कुछ रेखाएँ अछूती रहती हैं।


VK.ogr स्नैप टॉलरेंस -1 (नो स्नैप) से 0.00001 तक @Kantan द्वारा सुझाए अनुसार सेट करने के बाद इस विधि के साथ अच्छी सफलता मिली ।
सेमी 1

4

मैं Qgis2.16 के साथ उस समस्या में आ गया, लेकिन @ArereJ जैसे स्थैतिक रूप से सही परिणाम देने के लिए GRASS नहीं प्राप्त कर सका।

V.generalize.simplify टूल के उन्नत मापदंडों में v.in.ogr स्नैप टॉलरेंस को बदलने के लिए एक अच्छा समाधान है । डिफ़ॉल्ट -1 है, जो GRASS में स्नैपिंग को रोकता है।

यहां एक छोटा सा मूल्य (जैसे 1e-05 m) डालकर, तड़कना सक्षम है और GRASS बहुभुज की साझा सीमाओं को पहचानता है। फिर सरलीकरण छेद के बिना एक स्थैतिक रूप से सही परत देता है।

नोट: स्नैप सहिष्णुता को उच्च मूल्यों पर सेट करके, बहुभुजों को बदलना संभव है ताकि यदि आप चाहें तो बहुत पतले हटाए जा सकें। V.clean के साथ उस ऑपरेशन का पालन करें जो छोटे बचे हुए को हटाने के लिए rmarea और थ्रेशोल्ड का उपयोग करके बहुत बड़ा है, और आप कर रहे हैं!


3

पहले अपने बहुभुज को लाइनों में बदलें

अपने टोपोलॉजी को साफ करने के लिए v.clean का उपयोग करें ("ब्रेक" विकल्प के साथ)

तब आप अपनी लाइनों को सरल बनाते हैं

अंत में आप अपनी लाइनों को वापस बहुभुज में बदल देते हैं। (बहुभुज का उपयोग करके)

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


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

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

@ दाऊद। मुझे लगता है कि आपकी समस्या चरण 3, बहुभुज की रेखाओं के साथ हो सकती है। प्रसंस्करण टूलकिट में "पॉलीगॉनिज़" नामक एक उपकरण है और मैं यह कोशिश करूँगा। मुझे लगता है कि यह अभी भी Shapely और Numpy संकुल को स्थापित करने की आवश्यकता है। इसने कहा, मुझे QGIS- मास्टर के लिए काम करने के लिए "बहुभुज" नहीं मिल सकता है। एन।
नेपटन

2

आप इस तरह एक प्रसंस्करण (पूर्व SEXTANTE) मॉडल के साथ समस्या को हल कर सकते हैं:

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

स्क्रिप्ट संस्करण:

##Simplify polygons=name
##vectorlayer_input=vector
##number_tolerance=number 0.0
##output_layer_alg3=output vector
outputs_0=Processing.runalg("qgis:polygonstolines", vectorlayer_input, None)
outputs_1=Processing.runalg("qgis:simplifygeometries", outputs_0['OUTPUT'], number_tolerance, None)
outputs_2=Processing.runalg("qgis:linestopolygons", outputs_1['OUTPUT'], None)
outputs_3=Processing.runalg("qgis:joinattributestable", outputs_2['OUTPUT'], vectorlayer_input, ID, ID, output_layer_alg3)

नोट: एकमात्र बाधा यह है कि आम क्षेत्र में होना IDहै Join attributes table, क्योंकि उत्पादन का एकमात्र क्षेत्र है Lines to polygons। इसीलिए सामान्य क्षेत्र मॉडल का परिवर्तनशील इनपुट नहीं है। तो एक IDक्षेत्र इनपुट बहुभुज परत में उपलब्ध होना चाहिए।

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