स्पैटियालाइट और एसक्यूएल के साथ इस तरह की बात सबसे अच्छी होती है।
सबसे पहले आपको आपको डेटा को एक स्पैटियालाइट डेटाबेस में लोड करना होगा जो कि QBM के साथ काम करने वाले DBManager प्लगइन का उपयोग करके किया जा सकता है। आयात पर क्लिक करें Layer/File button
।
डेटाबेस में अपने डेटा के साथ आप फिर SQL
बटन का उपयोग करके निम्नलिखित क्वेरी चला सकते हैं । आपको अपने डेटा के अनुरूप कॉलम और तालिकाओं के नाम बदलने होंगे।
SELECT COALESCE(SUM(a2.pop),0) as pop_neighbours,
a1.pop,
a1.name,
a1.id,
a1.geomm FROM areas a1
LEFT OUTER JOIN areas a2 ON NOT a1.id = a2.id
AND intersects(a2.geomm, a1.geomm)
GROUP BY a1.id
क्वेरी टूल को अपना यूनिक आईडी कॉलम (आईडी) और ज्योमेट्री कॉलम (जिओम) बताएं, फिर बस लोड पर क्लिक करें।
इस तरह से लेबल लगाने के बाद आपको कुछ इस तरह का होना चाहिए
क्वेरी ब्रेकडाउन
हम परत का उपयोग करके स्वयं से जुड़ रहे हैं:
LEFT OUTER JOIN areas a2 ON NOT a1.id = a2.id
AND intersects(a2.geomm, a1.geomm)
लेकिन केवल जहाँ ज्यामितीय प्रतिच्छेद करते हैं और आईडी समान नहीं होते हैं, अन्यथा हम प्रत्येक बहुभुज के लिए दो बार एक ही रिकॉर्ड के साथ समाप्त होते हैं। हम इसका उपयोग भी कर रहे हैं LEFT OUTER JOIN
ताकि हम उन रिकॉर्ड्स को शामिल करें जो इसमें शामिल नहीं हैं अर्थात जिनके पास कोई पड़ोसी नहीं है।
चयनित भाग में:
SELECT COALESCE(SUM(a2.pop),0) as pop_neighbours,
a1.pop,
a1.name,
a1.id,
a1.geomm
हम (नहीं पड़ोसियों) COALESCE
को परिवर्तित करने के लिए उपयोग कर रहे हैं अन्यथा वे बस बने रहते हैं ।NULLS
0
NULL
तब हम बस GROUP BY a1.id
इतना करते हैं कि हमें प्रत्येक बहुभुज के लिए एक एकल रिकॉर्ड मिलता है।