बहुभुज के अंदर नियमित रूप से स्थान बिंदु बनाना QGIS का उपयोग कर विशेषता मूल्य के आधार पर?


11

मेरे पास एक बहुभुज परत है, जिसमें एक विशेषता मूल्य है जो एक बहुभुज के अंदर व्यक्तियों की गिनती का प्रतिनिधित्व करता है। मैं QGIS 3.0 का उपयोग कर रहा हूं।

मुझे बहुभुज के अंदर बिंदुओं के एक ग्रिड के रूप में मायने रखता है (यानी 1 बिंदु = 100 मेंढक, विशेष द्वारा रंगीन)। जरूरी नहीं कि बिंदुओं को पूरे बहुभुज पर कब्जा करने की आवश्यकता है, और अधिमानतः पूर्व-परिभाषित रिक्ति (यानी 300 मीटर) के साथ एक केन्द्रक के आसपास खींचा जाना चाहिए, ताकि वे एक विशिष्ट संकल्प पर एक साफ ग्रिड का प्रतिनिधित्व कर सकें।

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

संक्षेप में: प्रत्येक बहुभुज (बैच) के लिए नियमित अंक (परिभाषित अंक, खींची गई सीमा)> अतिरिक्त अंक हटाएं # अंकों के लिए विशेषता मान असाइन करें

वैकल्पिक (अनियमित रिक्ति से बचा जाता है, लेकिन और भी अधिक हेरफेर की आवश्यकता होती है):

पूरी परत की सीमा में नियमित अंक (परिभाषित स्पेस अर्थात 300 मीटर)> बहुभुज की हद तक क्लिप> प्रत्येक बहुभुज में अतिरिक्त अंक हटाएं जब तक आप बिंदुओं के वांछित # बिंदुओं को विशेषता मान असाइन न करें।

मेरे वर्कअराउंड के साथ मुख्य समस्या बहुभुज-बाय-बहुभुज प्रसंस्करण है, जिससे डेटा को अपडेट करना और बड़ी संख्या में पॉलीगोन के साथ काम करना मुश्किल हो जाता है।

अनुरूप प्रश्न QGIS में बहुभुज के भीतर अंक के # परिभाषित, नियमित रूप से बनाने के रूप में पूछा गया था , लेकिन बारीकियों अलग हैं।

वांछित परिणाम का स्क्रीनशॉट:

विशेषता तालिका:


1
क्या आपके प्रश्न में छवि परिणाम के रूप में आपकी अपेक्षा का प्रतिनिधित्व करती है? रंगीन बिंदुओं की गिनती कहां से होती है? क्या आप परत की विशेषता तालिका जोड़ सकते हैं? विशेष रूप से बहुभुजों की विशेषताएं जिनमें एडमोंटन और शेरवुड पार्क शामिल हैं, रंगों और गणनाओं की बेहतर समझ के लिए।
कादिर Kadबज

1. यह सिर्फ नकाबपोश डेटा है जिसका वास्तविक बहुभुजों से बहुत अधिक लेना-देना नहीं है, लेकिन हाँ मुझे इस तरह के परिणाम की उम्मीद है, लेकिन बहुभुज के केंद्र के आसपास डॉट्स के साथ। 2. गणना विशेषता तालिका स्तंभों से आती है, क्योंकि तीन कॉलम / प्रकार के बिंदु हैं जो मैं उन्हें एक कॉलम में एकत्र कर रहा था ताकि पहले प्रति बहुभुज पर सही संख्या में अंक मिल सकें और फिर अभिव्यक्तियों का उपयोग करके विशेषता / रंगों को असाइन किया जा सके। संपादित करें: एक्सेल टेबल को प्रश्न में जोड़ा गया , मूल्यों का प्रतिनिधित्व नहीं करता है, लेकिन मेरे डेटा की संरचना का प्रतिनिधित्व करता है।
रुस्लान

जवाबों:


5

QGIS 3 क्लस्टर रेंडरर में ग्रिड नामक एक नए विस्थापन विधि के साथ आता है। ऐसा लगता है कि आपको जो चाहिए वह बहुत ज्यादा है। बस अपने बहुभुज के केंद्र में वांछित बिंदुओं की संख्या बनाएं।

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

मुझे केवल एक gui टूल के साथ अंक उत्पन्न करने के लिए एक विधि के बारे में पता नहीं है, लेकिन एक अपेक्षाकृत सरल अजगर स्क्रिप्ट को ऐसा करना चाहिए।

with edit(point_layer):
    for polygon_feature in polygon_layer.getFeatures():
        point_feature = QgsFeature(point_layer.fields())
        point_feature.setGeometry(polygon_feature.geometry().centroid())

        point_feature['type'] = 'Frog'
        for i in range(polygon_feature['Frogs']):
            point_layer.addFeature(point_feature)

        point_feature['type'] = 'Cat'
        for i in range(polygon_feature['Cats']):
            point_layer.addFeature(point_feature)

        point_feature['type'] = 'Diplodoc'
        for i in range(polygon_feature['Diplodocs']):
            point_layer.addFeature(point_feature)

यदि आप पागल होना चाहते हैं, तो एक कस्टम प्रोसेसिंग एल्गोरिथ्म में लपेटें।


धन्यवाद मैथियास, जो अन्य समाधानों की तुलना में बेहतर लगता है। क्या आप इसे प्राप्त करने के लिए विशेषता तालिका के आधार पर वांछित # बिंदुओं को जल्दी से बनाने का एक तरीका सुझा सकते हैं?
रुस्लान

मुझे थोड़ी सी अजगर स्क्रिप्ट लिखने के अलावा एक आसान विधि के बारे में पता नहीं है। कोड पूरी तरह से अप्रयुक्त है, इसलिए कुछ टाइपोस हो सकता है;)
मथायस कुह्न

एक बार फिर धन्यवाद। मुझे संभवतः कई परतों / विस्तार आदि के लिए एक समान दृश्य करना होगा, इसलिए मैं इसके लिए कम से कम एक प्रोसेसिंग मॉडल बनाने की कोशिश करूंगा।
रुस्लान

5

सारथ SRK के उत्तर से प्रेरित होकर एक और तरीका हो सकता है:

  1. बहुभुज का केन्द्रक
  2. बफ़र वर्ग के साथ एक अभिव्यक्ति को नियोजित करता है और आपके पैमाने के साथ अनुकूलन करता है: यानी (1000 * (sqrt ("मेंढक" + "बिल्लियाँ" + "बस") / 2)) + 1 और खंड = 1, अंत टोपी शैली = वर्ग
  3. बफर के पैमाने के साथ एक रिक्ति के साथ नया ग्रिड बिंदु।
  4. वह बिंदु हटाएं जो बफर लेयर के साथ इंटरसेक्ट न हो (स्थान के अनुसार चुनें)
  5. स्थान (बफर या मूल बहुभुज का गुणन) के कारण जुड़ना

फिर भी, आपके पास कुछ ऐसा होगा यहाँ छवि विवरण दर्ज करें

  1. "@Row_number" कमांड के साथ एक नया क्षेत्र बनाने के लिए एक ग्राफिकल मॉडलर का उपयोग करें यहाँ छवि विवरण दर्ज करें

  2. बफर परत पर एक पुनरावृत्ति के साथ मॉडल निष्पादित करें यहाँ छवि विवरण दर्ज करें

  3. सभी नई परत को मिलाएं

  4. अपने फ़ील्ड के योग से बड़ा ID_pt फ़ील्ड के साथ सभी बिंदु हटाएं ("मेंढक" + "बिल्लियाँ" + "बस")

  5. नियमों के साथ वर्गीकृत (यानी
    • "ID_pt" <= "मेंढक"
    • "ID_pt"> "मेंढक" और "ID_pt" <= ("बिल्ली" + "मेंढक")
    • "ID_pt"> ("बिल्ली" + "मेंढक") और "ID_pt" <= ("बिल्लियाँ" + "मेंढक" + "सरल") यहाँ छवि विवरण दर्ज करें

इसके लिए धन्यवाद! मेरे पास आज यह कोशिश करने का समय नहीं है, लेकिन यह एक समाधान योग्य समाधान जैसा लगता है कि आपको वांछित आउटपुट मिला है।
रुस्लान

1

आप इसके लिए ज्यामिति जनरेटर का उपयोग कर सकते हैं।

  1. प्रतीक में 3 सबलेयर जोड़ें, प्रत्येक रंग / विशेषता के लिए एक।
  2. एक अभिव्यक्ति बनाएँ जो प्रत्येक सबलेयर के लिए एक बहुकोणीय उत्पन्न करता है।
  3. अब हार्ड भाग, गुण के आधार पर बहुभुज के लिए वर्ग भागों को उत्पन्न करता है। मुझे लगता है कि यह एक कस्टम अजगर अभिव्यक्ति समारोह की आवश्यकता होगी।
  4. वैकल्पिक, बहुभुज और रिक्ति के स्केलिंग को निर्धारित करने के लिए मैप-स्केल के लिए रेंडरिंग चर का उपयोग करें।

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

1

एक समाधान प्रत्येक बहुभुज के केन्द्रक पर बिंदुओं के साथ एक बिंदु परत बनाने के लिए हो सकता है। इसलिए छूट के लिए आपको एडमॉन्टन 25 के सुपरपोज्ड पॉइंट: 5 में फ्रॉग एट्रिब्यूट के साथ 5, कैट के साथ 20 पॉइंट और डिप्लोमा के साथ 0 अंक मिले।

फिर ग्रिड के रूप में सेट प्लेसमेंट विधि के साथ बिंदु विस्थापन रेंडरर का उपयोग करके आपको प्रभाव प्राप्त करने में सक्षम होना चाहिए।

बिंदु परत बनाने के लिए कठिनाई है ...।


0

परत के गुणों में उपलब्ध पाई चार्ट का उपयोग करने के लिए एक बहुत ही सरल विकल्प हो सकता है? विशेषताएँ और आकार एक अभिव्यक्ति द्वारा तय किए जा सकते हैं।

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


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

0

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


काफी पास लगता है, लेकिन जैसा कि सवाल में उल्लेख किया गया है कि मैं इसे कोड करने / वहां सुझाए गए कोड को बदलने के लिए पर्याप्त कुशल नहीं हूं।
रुस्लान

उम्मीद है कि पर्याप्त ज्ञान और समय के साथ कोई व्यक्ति इसमें
दम

0

आपके मामले में,

  1. संपूर्ण AOI के लिए दी गई दूरी का उपयोग करते हुए नियमित रूप से दूरी बिंदु बनाएँ
  2. सभी पॉलीगोन (इनपुट) के लिए सेंट्रोइड पॉइंट बनाएं।
  3. सेगमेंट वैल्यू '1' के साथ फिक्स्ड डिस्टेंस बफर का उपयोग करके उस सेंट्रोइड पॉइंट के लिए बफर बनाएं । यह सर्कल के बजाय स्क्वायर बफर बनाएगा (यदि आप बफर पॉलीगॉन को घुमाना चाहते हैं तो Qgis में रोटेट टूल का उपयोग करें)।
  4. वेक्टर का उपयोग करके बफर पॉलीगॉन के अंदर बिंदुओं का चयन बनाएं -> अनुसंधान उपकरण -> स्थान द्वारा चयन करें (पॉलीगॉन नियम के भीतर अंक)।
  5. बफर पॉलीगॉन के बाहर चयन स्विच और अंक हटाएं। तो अब आप नियमित रूप से बहुभुज के केन्द्रक के आसपास अंक प्राप्त किया।
  6. पूरे बिंदुओं के लिए अधिकांश विशेषता दें और बाकी बिंदुओं को मैन्युअल रूप से वर्गीकृत करने की आवश्यकता है । आसानी से अपडेट करने के लिए QuickMultiAttributeEdit टूल का उपयोग करें।

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