QGIS में निकटतम पड़ोसी समूह का चयन


14

मेरे पास एक सूची है जिसमें अक्षांश / लंबे प्रारूप में 100,000 से अधिक अंक हैं जिन्हें मैंने qgis में आयात किया है।

अब, मैं यहां क्या करने की कोशिश कर रहा हूं, इन सभी बिंदुओं को बॉक्स समूहों में समूहित किया गया है और इसके द्वारा मेरा अनिवार्य रूप से मतलब है कि मैं मानचित्र को बाउंडिंग बॉक्स में विभाजित करना चाहता हूं।

मेरी आवश्यकताएं इस प्रकार हैं:

  • किसी भी बॉक्सिंग समूह में कम से कम 100 और अधिक से अधिक 200 अंक नहीं होने चाहिए
  • कोई भी बिंदु एक से अधिक समूहों में नहीं होना चाहिए
  • सभी बिंदुओं को उनके निकटतम पड़ोसी पर आधारित होना चाहिए

मैं qgis के माध्यम से इसे कैसे प्राप्त कर सकता हूं?

मैं यह मान रहा हूं कि कोई कस्टम क्वेरी कोड पारित कर सकता है और परिणाम या बक्से को शेपफाइल सही के रूप में सहेज सकता है? क्या कोई यह बता सकता है कि यह कैसे किया जा सकता है और कोड कैसा दिखेगा?

जैसा कि उल्लेख किया गया है, मेरा उद्देश्य एक आकार की परत के रूप में प्रदर्शित वर्ग बक्से का एक गुच्छा है जहां प्रत्येक बॉक्स के भीतर 100 से कम गुण नहीं हैं और 200 से अधिक नहीं हैं।


6
इस प्रश्न को चिह्नित करने वाले सभी लोगों के लिए "पसंदीदा": इसे भी क्यों नहीं बढ़ाएं? किसी को लगता है कि आपका पसंदीदा प्रश्न एक अच्छा प्रश्न होना चाहिए।
UnderDark

1
आपको बॉक्सिंग की आवश्यकता क्यों है? यदि आप गिनती के आधार पर बक्से बनाते हैं, तो वे अलग-अलग आकार के होंगे, वैसे भी टाइलिंग प्रश्न से बाहर है। पॉलीगॉन (यानी उत्तल पतवार) में समूह बनाना शायद आसान है।
diciu

@diciu प्रतिक्रिया के लिए धन्यवाद। हाँ, मुझे लगता है कि एक उत्तल पतवार ठीक होगा क्योंकि मैं बाद में उन बक्से में बदल सकता हूं। उत्तल हल दृष्टिकोण का उपयोग करने के लिए मुझे किस कोड का उपयोग करना होगा?
NetConstructor.com

2
यदि आप उत्तल hulls का उपयोग करते हैं तो आपके बाउंडिंग बॉक्स (hulls को घेरते हुए) ओवरलैप होंगे और एक बिंदु के लिए आपकी आवश्यकता एकल BBOX में संतुष्ट नहीं होगी। उत्तल पतवार BBOX की ओर एक मध्यवर्ती कदम के रूप में नहीं बल्कि एक प्रतिस्थापन के रूप में काम करता है। और फिर भी, एक सामान्य समाधान बनाने के बजाय शामिल किया जाएगा।
diciu

जवाबों:


13

मैं आपको इस बात का हिस्सा दे सकता हूं कि आपने यह अनुमान लगा लिया है कि अंकों के एक सेट के उत्तर (ए) के सबसे पूर्वी आधे हिस्से का अनुरोध कैसे किया जाता है (बी)। इनमें से, आप निश्चित रूप से, सबसे आसानी से प्राप्त कर सकते हैं (c) सबसे पश्चिमी आधे या (d) सबसे दक्षिणी आधे। (मैं QGIS नहीं जानता, लेकिन सामान्य रूप से (ए) करने का एक तरीका मंझला एक्स-समन्वय का अनुरोध करना है और फिर उन सभी बिंदुओं को प्राप्त करना है जिनके एक्स-निर्देशांक इससे अधिक हैं। (बी) के समाधान - (डी) समान हैं ।)

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

Procedure Box(P: set of points, i: boolean, n: integer)
Begin
    If (Count(P) > 2*n) then
        {R,S} = Half(P,i)
        Q = Box(R,!i,n) + Box(S,!i,n)
    Else
        Q = {P}
    Endif
    Return Q
End

इस छद्मकोश में, R और S विभाजन P; बॉक्स (R; i; n), orthogonal दिशा में R का एक विभाजन है , Box (S; i; n), orthogonal दिशा में S का एक विभाजन है, "+" का अर्थ है सेट-थियोरेटिक यूनियन, और {} एक सेट डिजाइन करता है। (बंटवारे की दिशा को वैकल्पिक करना स्ट्रिप्स के बजाय बक्से बनाता है।) पैरामीटर n विभाजन में एक समूह के न्यूनतम आकार को निर्दिष्ट करता है; अधिकतम आकार 2 n है

उदाहरण

यहाँ, चित्रण के रूप में, Box(P,true,100)100 और 200 के बीच के समूहों में विभाजित 12,891 यादृच्छिक बिंदुओं का एक सेट P है । एल्गोरिथ्म 128 बक्से बनाता है जिसमें से 37 में 100 अंक हैं और 91 में 101 अंक हैं।


2
एल्गोरिथ्म कुशल है। एक ही कोर पर दौड़ते हुए, इसने 18 सेकंड में दस गुना (128,910) अंक हासिल किए। यह n बिंदुओं के लिए O (n log (n) log (n)) के रूप में होता है। (यह लॉग (एन) के उन कारकों में से एक को दूर करने के लिए सुधार किया जा सकता है, लेकिन प्रयास सार्थक होने की संभावना नहीं है।)
whuber

1
@ क्या आपने बिंदु निर्देशांक के विभाजन को सुविधाजनक बनाने के लिए एक शाब्दिक प्रयोग किया है?

2
@

1
@ एक शाब्दिक प्रकार मदद करेगा, लेकिन आवश्यक नहीं है। ध्यान दें कि n मानों का एक माध्य O (n) समय (O (n log (n)) समय) में पाया जा सकता है, इसलिए पूर्व-पश्चिम हिस्सों या उत्तर-दक्षिण हिस्सों में बिंदुओं का विभाजन असमान रूप से O (n) है ) संगणना।
whuber
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.