QGIS में भारित बिंदुओं से घनत्व मानचित्र बनाने का सबसे अच्छा तरीका क्या है?


18

मैं वास्तव में आर्कजीआईएस कर्नेल घनत्व उपकरण की कार्यक्षमता को दोहराना चाहता हूं - मैं ऐसा कैसे कर सकता हूं?

मैं आसान-से-मुक्त और खुले स्रोत वाले सॉफ़्टवेयर के लिए उत्तरों को सीमित करना चाहूंगा - अर्थात QGIS सभी प्लेटफार्मों पर GRASS के साथ आसानी से स्थापित होता है, इसलिए QGIS + GRASS ठीक रहेगा, लेकिन SAGA (दुर्भाग्य से, क्योंकि यह क्या हो सकता है) आदर्श उपकरण हो)।

मैं QGIS में संरक्षित क्षेत्रों में वन्यजीवों के घनत्व के नक्शे बनाने की कोशिश कर रहा हूं। निम्नलिखित उदाहरण में घनत्व का नक्शा आर्कजीआईएस में वन्यजीवों के बिंदु अवलोकनों से उत्पन्न किया गया था, जिसमें समूह आकार (वेक्टर फ़ाइल में एक फ़ील्ड) की कच्ची गणना में प्रत्येक ग्रिड सेल के घनत्व का उपयोग कर्नेल घनत्व (स्पैटियालिस्टिक्स) टूल के साथ किया गया था, एक चयनित खोज त्रिज्या और ग्रिड सेल का आकार:

5x5 किमी ग्रिड कोशिकाओं और 7.5 किमी त्रिज्या कर्नेल घनत्व के साथ काफ्यू राष्ट्रीय उद्यान में वन्यजीव घनत्व

घनत्व पर पिछले प्रश्न में , आर्कजीस कर्नेल डेंसिटी टूल की नकल करने के लिए GRASS v.k कर्नेल टूल का उपयोग करने का सुझाव दिया गया था, लेकिन v.kernel एक ही काम नहीं करता है । एक घनत्व मानचित्र बनाने वाले मैनुअल और (सफलतापूर्वक) को देखने के बाद , ऐसा लगता है कि वी। कर्नेल फ़ंक्शन केवल बिंदु घनत्व के साथ काम करता है , और प्रत्येक बिंदु को वजन करने के लिए प्रत्येक बिंदु (जैसे कि कच्ची गिनती) के लिए एक चर देने का अवसर नहीं है। ।

अपडेट करें

*.surf.*GRASS में विभिन्न उपकरण हैं जो एक घनत्व सतह बनाने में मदद कर सकते हैं - और ये एक भार स्तंभ या z- मान को स्वीकार करते हैं, या आपदाओं पर किए जाते हैं। @underdark ने सुझाव दिया कि v.surf.rst - और 'जूलरी' मेरा भार (गणना) चर होगा - लेकिन मैं यह पता नहीं लगा सकता कि उपकरण को एक निश्चित ग्रिड आकार बनाने के लिए या एक निश्चित त्रिज्या का उपयोग कैसे करें।

V.surf.rst या किसी अन्य विधि का उपयोग करने के बारे में सुझाव?


नमूना डेटा

x,y,count
431250,8707500,0
418750,8707500,5
413750,8707500,3
411250,8707500,1
408750,8685000,0
411250,8685000,0
416250,8685000,0
416250,8682500,6
411250,8682500,3
418750,8680000,0
433750,8677500,3
421250,8677500,0
423750,8675000,1
431250,8672500,0
428750,8672500,2
426250,8672500,2
423750,8670000,0

क्या आप अपने इनपुट डेटा का अधिक वर्णन कर सकते हैं? शायद v.surf.rst v.kernel grass.osgeo.org/gdp/html_grass64/v.surf.rst.html की तुलना में अधिक उपयुक्त होगा । क्या आपके पास ऊपर दिखाए गए ग्रिड सेल के प्रति एक गणना मूल्य है?
UnderDark

@underdark - कुछ नमूना डेटा जोड़े गए। यह बिंदु डेटा (हाथी की संख्या देखी गई) के साथ बिंदु डेटा है और प्रति ग्रिड सेल में एक से अधिक अवलोकन हो सकते हैं। आम तौर पर आर्कजीआईएस 'काउंट' कर्नेल घनत्व उपकरण का 'जनसंख्या' क्षेत्र बन जाएगा।
सिंबांगु

जितना अधिक मैं इसके बारे में सोचता हूं, उतना ही कम मैं मानता हूं कि v.kernel आपके उपयोग के मामले में एक अच्छा विकल्प है। क्या आपने साहित्य की जाँच की है? शायद पहले एक सवाल पूछें कि इस मामले में कौन सी विधि उपयुक्त है।
UnderDark

मेरा मुख्य प्रश्न यह है कि आर्किव से कर्नेल घनत्व की कार्यक्षमता को कैसे दोहराया जाए, जो कि एक ज्ञात विधि है। आप सही कह रहे हैं, v। कर्नेल लगभग निश्चित रूप से ऐसा करने के लिए सही उपकरण नहीं है!
Simbamangu

@underdark, धन्यवाद - मैंने कुछ हद तक सवाल का विस्तार किया है जो मदद कर सकता है; v.surf.rst उपयुक्त लगता है, लेकिन इसके उपयोग पर कुछ मार्गदर्शन का उपयोग कर सकता है।
सिंबांगु

जवाबों:


8

इसके मैनुअल पेज के अनुसार, GRASS कमांड r.resamp.filter बिंदु डेटा का प्रतिनिधित्व करने वाले रैस्टर्स के लिए करेगा , जो आर्क लेयर्स पॉइंट लेयर्स के लिए क्या करेगा : filter=box"सिंपल" रैस्टर के लिए filter=gaussविकल्प का उपयोग करें और अन्य आर्कगैस कर्नेल के लिए विकल्प का उपयोग करें । -nझंडे के प्रचार से बचने के लिए ध्वज का उपयोग करें ।


ध्यान दें कि कर्नेल घनत्व अनुमान (उर्फ "हीट मैप्स") डेटा के प्रक्षेप नहीं हैं । स्थान X पर KDE का मान x के पास प्रति इकाई क्षेत्र " Z " मान की मात्रा का अनुमान लगाता है । (त्रिज्या या "बैंडविड्थ" निर्धारित करता है कि "निकट" का क्या मतलब है।) Z के मूल्यों को मानचित्र पर हर संभावित स्थान पर परिभाषित करने की आवश्यकता नहीं है। उदाहरण के लिए, Z एक व्यक्ति के रूप में कुछ की उपस्थिति का प्रतिनिधित्व कर सकता है, जिस स्थिति में केडीई जनसंख्या घनत्व देता है । न ही Z के मान पूरे मानचित्र में निरंतर भिन्न होने की आवश्यकता है। प्रक्षेप के लिए, यह माना जाता है कि जेडसभी स्थानों पर परिभाषित किया गया है और यह कि डेटा निर्दिष्ट बिंदुओं पर Z के मूल्यों का अवलोकन है । इंटरपोलर अन्य सभी बिंदुओं पर Z के अप्रतिबंधित मूल्यों की भविष्यवाणी करने का प्रयास करता है । यह समझ में आता है कि जब Z , कहते हैं, एक तापमान या दबाव है, लेकिन आमतौर पर निरर्थक है जब Z किसी चीज की उपस्थिति दर्ज करता है या जब डेटा पूर्ण जनगणना होता है। (बाद के मामले में, चिंतन करें कि किसी क्षेत्र के लिए सड़क घनत्व मानचित्र का क्या मतलब हो सकता है और कोई गैर-सड़क क्षेत्रों में संभवतः "इंटरपोलिंग" सड़कों का अर्थ कैसे बना सकता है।)


मुझे अपने GRASS टूलबॉक्स (OS X, GRASS 6.4 पर) में r.resamp.filter नहीं लगता है। हालाँकि - जब तक आपने इसका उल्लेख नहीं किया, तब तक मुझे एहसास नहीं हुआ कि 'हीट मैप्स' केडी के समान हैं; मुझे लगा कि वे पूरी सतह को प्रक्षेपित कर रहे हैं। क्या RG | QGIS में हीटमैप टूल एक KD करता है? 'क्षय अनुपात ’क्या है?
सिंबांगु

मेरा मानना ​​है कि शब्द "हीटमैप" को जीआईएस में इसके मूल अर्थ से सह-चुना गया है जो आम तौर पर और लगभग किसी भी रेखापुंज जैसे मानचित्र को संदर्भित करता है। मुझे संदेह है कि कोई भी जीआईएस कार्यक्षमता प्रदान करता है जो मूल अर्थ से मेल खाता है।
whuber

जांच करने पर, क्यूजीआईएस में हीटमैप टूल आर्क में केडी के समान होता है, यदि आप क्षय अनुपात को 0 पर सेट करते हैं (घनत्व को 0 पर रेडियस के किनारों पर टैप करते हुए)। कुछ अंतर प्रतीत होते हैं: परिकलित सेल मान 25 x अधिक (5 किमी त्रिज्या / 2.5 किमी सेल), जैसा कि फ़ंक्शन कोशिकाओं पर लागू होता है - आर्क वास्तविक बिंदु के चारों ओर एक त्रिज्या का उपयोग करता प्रतीत होता है, जबकि QGIS अतिव्यापी सेल का चयन करता है और उस बिंदु से टेंपर करें।
सिंबांगु

2
सामान्य उपयोग में "हीटमैप" का अर्थ बहुत सारी चीजें हैं - चारों ओर देख रहा हूं, मैं देखता हूं कि इसे प्रक्षेपित सतहों, कर्नेल घनत्व और गैर-स्मूथ पिक्सल के सरल रंग पर भी लागू किया गया है। मूल उपयोग / इतिहास पर दिलचस्प पेपर - और ऐसा लगता है जैसे हमें QGIS टूल को लेबल करने में अधिक सटीक शब्दों का उपयोग करना चाहिए।
सिंबांगु

3
@Simbamangu r.resamp.filter GRASS 7 में नया है , लेकिन OS X के लिए एक मासिक स्नैपशॉट है । इसके अलावा, हीटमैप टूल घनत्व के वितरण के लिए एल्गोरिदम के लिए कोई विकल्प पेश नहीं करता है, इसलिए यह कर्नेल घनत्व या r.resamp.filter के बराबर नहीं है, मुझे लगता है।
टॉरस्टी

3

सागा का मॉड्यूल 'कर्नेल डेंसिटी एस्टीमेशन' वह है जो आप खोज रहे हैं।

QGIS में सागा मॉड्यूल इंटरफ़ेस स्थापित करें (मेनू में: प्लगइन्स -> पायथन प्लगइन्स ..) और मॉड्यूल का उपयोग करें। सौभाग्य!


मैं SAGA का उपयोग करने के लिए प्यार करता हूं, लेकिन मैं OSX 10.7 में काम कर रहा हूं और अभी तक सफलतापूर्वक इसे बनाने के लिए है (OSX के लिए कोई बायनेरिज़ नहीं हैं); मैंने हाल ही में घंटों का उपयोग एक से अधिक संकलन विधि के साथ किया है, लेकिन बिल्ड हमेशा विफल रहता है।
सिंबांगु

फिर आपको OSX 10.7 पर SAGA संकलन के बारे में सवाल पूछना चाहिए। जैसा कि मैं सागा को आर्कगिस केडी टूल का एकमात्र उचित विकल्प देखता हूं।
व्लादिमीर

3

ग्रैस जीआईएस के साथ वास्तव में सरलीकृत विधि, जो कर्नेल घनत्व की तुलना में आर्कपैप में पॉइंट डेंसिटी के करीब है:

  1. r.in.xyzएक निर्दिष्ट रेखापुंज संकल्प (सेट के साथ g.region) पर विधि = योग का उपयोग करके एक रेखापुंज मानचित्र पर अंक आयात करें ।

  2. r.neighborsविधि = औसत (जो डिफ़ॉल्ट है) के साथ मानचित्र को चिकना करने के लिए उपयोग करें और खोज त्रिज्या सेट करने के लिए विकल्प आकार का उपयोग करें।

(फिलहाल मेरे पास GRASS की पहुँच नहीं है इसलिए मैंने वास्तव में यह कोशिश नहीं की!)


v.in.xyzऔर v.neighborsभी काम कर सकते हैं। मैनुअल निर्दिष्ट नहीं करता है कि आपने यह कैसे निर्धारित किया है v.neighborsकि किस विशेषता का उपयोग किया जाता है ।
टॉरस्टी

2

जैसा कि आपने v.surf.rst पर अधिक मार्गदर्शन का अनुरोध किया, यहां मेरे इनपुट हैं

सबसे पहले, ग्रिड आकार के बारे में - आप प्लगइन -> GRASS -> वर्तमान GRASS क्षेत्र को संपादित कर सकते हैं और आउटपुट रिज़ॉल्यूशन सेट कर सकते हैं। V.surf.rst से आपके आउटपुट में वह रिज़ॉल्यूशन होगा।

त्रिज्या के लिए, 'तनाव' पैरामीटर लगता है। मैं इस एल्गोरिथ्म का कोई विशेषज्ञ नहीं हूं, लेकिन मैनुअल से पढ़ना, यह प्रासंगिक सा प्रतीत होता है

"" उच्च तनाव "बिंदुओं के बीच की दूरी को बढ़ाता है" और प्रत्येक बिंदु के प्रभाव की सीमा को कम करता है, कम तनाव "दूरी कम करता है" और अंक एक-दूसरे को अधिक समय तक प्रभावित करते हैं) .. "

तो आप तनाव पैरामीटर का उपयोग मोटे तौर पर कर सकते हैं क्योंकि आप त्रिज्या पैरामीटर का उपयोग करेंगे।

आपके नमूना डेटा से, v.surf.rst का परिणाम नीचे जैसा दिखता है और ऐसा लगता है कि यह उचित है क्योंकि यह प्रक्षेप के लिए भार के रूप में उपयोग कर रहा है।

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


1
इसके लिए धन्यवाद - मदद पृष्ठ की तुलना में समझने में बहुत आसान है। जैसा कि @whuber द्वारा ऊपर उल्लेख किया गया है, प्रक्षेप इस तरह के बिंदु नमूना डेटा के लिए सही विधि नहीं है, हालांकि।
Simbamangu

2

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

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


1

यदि आप qgis के बाहर कुछ जावा प्रोग्रामिंग करना स्वीकार करते हैं, तो आप बस इस घनत्व मानचित्र बिल्डर लाइब्रेरी का उपयोग कर सकते हैं ।

कंस्ट्रक्टर का उपयोग करते हुए HeatMapBuilder(int w, int h, int[][] pts, int[] weights), प्रत्येक बिंदु के लिए आपको आवश्यकतानुसार वजन देना संभव है। आउटपुट छवि को getImage()विधि के साथ पुनर्प्राप्त किया जा सकता है और आपकी डिस्क पर एक के साथ बचाया जा सकता है ImageIO.write("mymap.png")

यहाँ आउटपुट का एक उदाहरण है:

गर्मी का नक्शा opencarto जावा पुस्तकालय के साथ

चौरसाई ताकत और रंग पैलेट को बदलना संभव है।

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