बहुभुज के बीच छोटे रिक्त स्थान (स्लिवर्स) को हटाना? [बन्द है]


51

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

मैं रिक्त स्थान हटाकर पॉलीगॉन को एक साथ कैसे स्नैप कर सकता हूं?

QGIS पसंद करते हैं, लेकिन ArcGIS और सामान्य प्रोग्रामिंग भी विकल्प हैं।

जवाबों:


27

हटाएं (ArcInfo लाइसेंस आवश्यक) का उपयोग करें

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

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000005p000000.htm

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

ArcGIS 10 उपयोगकर्ता ध्यान दें कि इस उपकरण के विकल्प में एक नया फीचर है।

अब मूल POLYGON या POLYLINE को विकल्प> ex_features (वैकल्पिक) एक इनपुट पॉलीलाइन या बहुभुज सुविधा वर्ग या परत के साथ संरक्षित करना संभव है जो बहुभुज सीमाओं या उसके भागों को परिभाषित करता है, जिसे समाप्त नहीं किया जाना चाहिए।


3
क्या यह चिड़ियाघर के मामले में काम करता है? प्रतीत होता है कि पोरगोनों के बीच कोई अंतराल नहीं है, बस बहुभुजों के बीच अंतराल है।
UnderDark

3
मैंने बहुभुजों के बीच अंतराल को दूर करने के लिए इस उपकरण का सफलतापूर्वक उपयोग किया है। यद्यपि इस उपकरण का उपयोग करने में कोई समस्या है। जब यह जियोप्रोसेसिंग के दौरान बहुभुजों को क्रैक करता है, तो यह नए बने बहुभुजों को सामान्य करता है। तो, तेज "दांतेदार" लाइनों के बजाय, कर्व्स उतना चिकना नहीं होगा। YMMV।
अमरसिंह

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

उपकरण के विकल्पों में से एक सबसे लंबे सीमा (या डिफ़ॉल्ट विकल्प) या सबसे बड़े क्षेत्र के साथ पड़ोसी बहुभुज के साथ ज़ुल्फ़ को मर्ज करना है।
केंबुजा

4
यदि आपके पास ArcInfo लाइसेंस नहीं है, तो arcscripts.esri.com/details.asp?dbid=14672 पर एक स्क्रिप्ट है जो इसे पायथन के माध्यम से स्वचालित करती है। मैंने कुछ साल पहले इसका सफलतापूर्वक उपयोग किया था।
स्टीफन लीड

20

QGIS में हाथ से ऐसा करने के लिए, पर जाएँ Settings|Project Properties...पर Generalतल पर टैब है Snapping options...परत है कि आप, स्नैप करने के लिए मोड सेट करना चाहते हैं की जाँच करें to vertexऔर कुछ दो अंक है कि आप बीच सबसे कम दूरी की तुलना में कम मूल्य के लिए सहिष्णुता की स्थापना की। यदि आप निश्चित नहीं हैं, तो इकाइयों को pixels5 जैसी किसी चीज़ के लिए और सहिष्णुता पर सेट करें, ताकि यदि कुछ काल्पनिक विवरण हों, तो आप सही तरीके से ज़ूम कर सकें और सुनिश्चित करें कि आप गलत शीर्ष पर नहीं जाएँ।

फिर अपनी वेक्टर परत को संपादित करें, नोड टूल का चयन करें, और गलत बिंदुओं को उनके समकक्षों में स्थानांतरित करें।

इसे अपने आप करना थोड़ा पेचीदा है। AFAIK QGIS के पास इसे स्वचालित करने के लिए एक प्लगइन नहीं है, और यद्यपि PostGIS GEOS पर बनाया गया है जिसमें तड़क-भड़क वाले कार्य हैं, वे PostGIS के संपर्क में नहीं हैं। तड़क-भड़क वाली दूरी के भीतर पड़ोसियों के लिए बहुभुज के प्रत्येक बिंदु की जांच के लिए एक प्रश्न लिखना संभव हो सकता है, लेकिन वर्तमान में विस्तार करने के लिए यह मेरी बुद्धि से परे है।

GRASS में v.clean.snap है जिसे आप QGIS के माध्यम से एक्सेस कर सकते हैं, लेकिन GRASS डेटासेट बनाने का अतिरिक्त चरण है।


आप हमेशा QGIS प्रोसेसिंग टूलबॉक्स का उपयोग कर सकते हैं और v.clean.snap को सीधे अपने शेपफाइल में लागू कर सकते हैं।
सांडर्का

v.clean.snap उपलब्ध नहीं है। मैंने v.clean का उपयोग किया और फिर स्नैप टूल को चुना और इसने एक खाली परत दी। डॉक्यूमेंटेशन कहता है कि स्नैप को वर्टेक्स में लाइनों से जुड़ना है। मैं दहलीज के भीतर एक और शीर्ष पर शीर्ष से जुड़ना चाहता हूं।
neogeomat

17

यदि आप QGIS से परिचित हैं: QGIS ट्रंक 1.9 में (OSGEO इंस्टॉलर के माध्यम से qgis.dev के रूप में स्थापित किया जा सकता है, देखें qgis होमपेज) वेक्टर मेनू में एक नया फ़ंक्शन है जिसे "स्लिवर पॉलीअन" कहा जाता है, जो वास्तव में आप क्या करता है चाहते हैं। आप समस्याग्रस्त बहुभुज का चयन कर सकते हैं और उन्हें एक सामान्य सीमा या क्षेत्र की प्रवृत्ति के आधार पर आसन्न बहुभुज में विलय कर सकते हैं। कोशिश करके देखो!


3
इस उत्तर को अपडेट करने के लिए, QGIS 2.18.1 में 'एलिमिनेट स्लीवर पॉलीगन्स' स्थिर पैकेज में उपलब्ध है और वेक्टर -> जियोप्रोसेसिंग टूल्स के तहत पाया जाता है।
वैलेरी एंडरसन

यह मुख्य आवारा लोगों के बीच मौजूदा आवारा स्लिव पॉलीगोन पर लागू होता है, पॉलीगोन के बीच रिक्त स्थान के मामले में नहीं।
स्ट्रागो

15

यदि आप एक QGIS उपयोगकर्ता हैं, तो आपको GRASS की सारी शक्ति मिलती है, क्योंकि यह पूरी तरह से सामयिक जीआईएस है। QGIS के अंदर GRASS प्लगइन को सक्रिय करें, अपने डेटा को आयात करने के लिए एक स्थान / मैपसेट बनाएं।

मैपसेट खोलें और v.in.ogr के साथ गंदी परत आयात करें: दो उन्नत मापदंडों "सीमाओं के लिए तड़कना" और "आयात किए जाने वाले क्षेत्र का न्यूनतम आकार" के साथ खेलें।

आप उन विकल्पों का भी उपयोग कर सकते हैं जो v.clean मॉड्यूल प्रदान करते हैं।


10

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

आप सबसे अधिक संभवत: " मस्ट नॉट गैप्स " नियम को लागू करना चाहेंगे । एक बार जब आप सभी नियमों के साथ नियम बना लेते हैं जो आपको लगता है कि आवश्यक हैं, तो आप उस टोपोलॉजी को मान्य करना चाहेंगे जो आपके डेटा की सभी त्रुटियों की पहचान करेगी।

फिर, त्रुटि निरीक्षक और फिक्स टोपोलॉजी एरर्स टूल का उपयोग करके , आप या तो व्यक्तिगत रूप से या बल्क उन त्रुटियों का चयन कर सकते हैं जिन्हें आप ठीक करना चाहते हैं और आप उन्हें कैसे ठीक करना चाहते हैं (यानी- voids को भरने के लिए नए पॉलीगॉन बनाएं या पास के बड़े पॉलीथिन के साथ विलय करें) ।


7

QGIS 2.12 (ल्योन) टूलबॉक्स में "एलिमिनेट स्लिवर पॉलीगन्स" फ़ंक्शन है। मुझे यकीन है कि यह कुछ पुराने संस्करण में भी है।


2

ठीक है, मैं एक PostGIS फ़ंक्शन का उपयोग कर रहा हूं (मैं सीधे अपने QGIS पर उपयोग करता हूं) जो इस समस्या को हल करने के लिए एक पुनरावर्ती स्नैप निष्पादित करता है। परिणाम काफी अच्छे हैं, यह सिर्फ सर्वोत्तम परिणाम प्राप्त करने के लिए सहिष्णुता के मूल्यों का एक अच्छा आनंद की मांग करता है। यदि आप कोशिश करने के लिए तैयार हैं, तो इसे जांचें (मेरे मामले में ज्यामिति सभी बहु हैं, इसलिए मेरे निष्पादन में st_multi):

CREATE OR REPLACE FUNCTION dsgsnap(tabela text, snap float) RETURNS void AS 
        $BODY$
            DECLARE
            id int;
            BEGIN
                FOR id in execute('select id from '||tabela)
                LOOP
                    EXECUTE     
                'update '||tabela||' as classe set geom = st_multi(res.geom) 
                from 
                    (
                        select st_snap(a.geom, st_collect(b.geom), '||snap||') as geom, a.id as id 
                        from '||tabela||' a, '||tabela||' b 
                        where a.id != b.id and a.id = '||id||' 
                        group by a.id, a.geom
                    ) as res 
                where res.id = classe.id';
                END LOOP;
                RETURN;                        
            END
        $BODY$
        LANGUAGE plpgsql;

1

एक सही समाधान नहीं है, लेकिन इन दो चीजों में से एक ज्यादातर मामलों में मेरे लिए काम करता है:

  1. QGIS में, GEOJSON फॉर्मेट में लेयर को सेव करें। लेकिन सहेजने से पहले, "सहेजें परत के रूप में" संवाद बॉक्स में, 3 (15 डिफ़ॉल्ट है) के लिए समन्वय सटीक सेट करें। यह उन कोणों को एकजुट करने का प्रभाव होगा जो प्रत्येक अभिजन के बहुत करीब हैं।

  2. Mapshaper पर जाएं , फ़ाइल अपलोड करें, और हिट करें "सरल करें।" ऊपरी-बाएं कोने में यह आपको बताएगा कि यह कितने लाइन चौराहों को ढूंढता है, और आपको उन्हें ठीक करने का विकल्प देगा। मुझे लगता है कि यह फिक्स काम लगभग आधा समय है।


0

मैंने इसका उपयोग नहीं किया है, लेकिन ईटी जियोविज़ार्ड , जो कई आर्कएडिटर और आर्कइन्फो को लाता है, केवल आर्कव्यू लेवल लाइसेंस (उर्फ आर्कगिस स्टैंडर्ड) के लिए प्रोसेसिंग टूल एक एलिमिनेट विजार्ड है कि "अवांछित बहुभुज (स्लिवर्स) को पड़ोसी पॉलीगोन में विलय करके या हटा देता है। उन्हें हटाना ” । विज़ार्ड टूलकिट आपको $ 250 usd ( pricelist ) वापस सेट करेगा ।


0

मुझे उसी समस्या का सामना करना पड़ा, जो कि मैंने बहुत आसानी से तय किए गए औजारों की खोज करके, हालांकि मुझे तर्क का पता नहीं है। [[टूल मैनेजमेंट टूल बॉक्स में जाते हैं, फ़ीचर क्लास में जाते हैं और डबल क्लिक करके स्क्रिप्ट को इंटीग्रेट करते हैं] [१]

स्क्रिप्ट विंडो में समस्या वर्ग की सुविधा का चयन करें और XY सहिष्णुता में कई बिंदुओं पर माप उपकरण की मदद से दूरी को मापते हुए vale जोड़ें और एक औसत vale प्राप्त करें जो सहिष्णुता के वातावरण में उस मूल्य को डालते हैं और समस्या को हल करते हैं। अब नहीं, लेकिन लगभग 90% सटीकता के साथ हल किया गया। [[यहाँ छवि विवरण दर्ज करें] [२]

मैंने उपरोक्त उत्तर में वर्णित सभी अन्य तरीकों की कोशिश की, लेकिन आसन्न बहुभुजों के बीच अंतराल के लिए स्वचालित सुधार प्राप्त करने के लिए एक कठिन और बोझिल था।


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