कैसे gdal_pro निकटता के साथ एक सुविधा के लिए दूरी की गणना करने के लिए?


28

मैं संयुक्त राज्य अमेरिका (कम 48 राज्यों) में निकटतम प्रमुख नदी की दूरी का पता लगाने के लिए gdal_pro निकटता का उपयोग कर रहा हूं। मैंने कॉनस अल्बर्स (epsg: 5070) को एनएचडी + नेटवर्क फ्लोलाइन का अनुमान लगाया है, स्ट्रीम ऑर्डर> 5 के साथ चयनित नदियों, और rasterized, जलती हुई नदियों को 255 के रूप में, कोई नदी 0. के रूप में नहीं। यह बहुत ठीक है, लेकिन अब मुझे दूरी खोजने की आवश्यकता है 50 किमी के भीतर साइटों के लिए निकटतम नदी। महाद्वीपीय पैमाने पर इनपुट फ़ाइल 30 मीटर रिज़ॉल्यूशन पर है, इसलिए बहुत बड़ी है, लेकिन रूपांतरण एक साधारण गदल_प्रौद्योगिकी होना चाहिए:

gdal_proximity.bat -values 255 -distunits GEO -maxdist 50000 -nodata -999 infile.tif outfile.tif -co COMPRESS=DEFLATE -co BIGTIFF=YES -co TILED=YES

यह -almost- काम लगता है, लेकिन आउटपुट में एक अजीब ज्यामितीय पैटर्न का उत्पादन कर रहा है (छवि देखें)। आउटपुट में मौजूद डेटा ने सही तरीके से संसाधित किया है। क्या कोई सुझाव दे सकता है कि आउटपुट का इतना हिस्सा क्यों गायब है?

नदी से निकटता

संपादित करें: यदि यह वैकल्पिक मापदंडों में से किसी के कारण होता है, तो परीक्षण करने के लिए, मैंने इस कॉन्फ़िगरेशन में फिर से gdal_pro निकटता चलाई:

gdal_proximity.bat H:\data\tmp\NHDplus_network_flowline_SO6plus.tif H:/data/tmp/NHDplus_network_flowline_SO6plus_proximity.tif -values 255 -maxdist 50000 -of GTiff

जो अनिवार्य रूप से एक ही परिणाम निकले:

नदी से निकटता, कोई वैकल्पिक पैरामीटर नहीं

मेरा एकमात्र विचार यह है कि यह रेखापुंज के आकार से संबंधित हो सकता है (~ 100 जीबी असम्पीडित। जहाँ तक मुझे पता है कि बिगटैफ़ के आकार की कोई सीमा नहीं है, लेकिन हो सकता है कि गाल्ड की कोई सीमा हो। प्रभावी ढंग से विश्लेषण?


1
यदि आप टाइल वाले = हाँ को बंद करते हैं तो क्या होगा? यदि आप GEO से PIXEL में बदलते हैं, तो भी यह काम करता है? (आउटपुट उपयुक्त नहीं हो सकता है, लेकिन यह समस्या को कम कर सकता है)
स्टीवन के

सुझाव के लिए धन्यवाद - मूल प्रश्न का उत्तर जोड़ दिया है।
आर रोड्स

क्या आपके infile.tif पर संकल्प?
शाहरियर

2
क्या आप बैचों (लाइनों) में GDAL का उपयोग करके डेटा को पढ़ने का प्रयास कर सकते हैं और देख सकते हैं कि समस्या स्वयं डेटा है या QGIS इसकी कल्पना नहीं कर पा रहा है? इस समस्या को खोजने के लिए एक पहला कदम एक नमूना एओआई के लिए स्थानिक सीमा को कम करना है।
रटगर्ह

जवाबों:


3

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

इस एल्गोरिथ्म की मदद करने के लिए संख्यात्मक डेटाैटिप्स पर एक नज़र डालें । Rasterized स्ट्रीम नेटवर्क में केवल बाइनरी वैल्यूज़ की आवश्यकता होती है, इसलिए हम Byteरैस्टर डेटा टाइप का उपयोग करके संसाधनों पर बचत कर सकते हैं । धाराओं के लिए 1 का मान जलाएं और पृष्ठभूमि के लिए 0:

gdal_rasterize -l streams -burn 1 -tr 50 50 -a_nodata 0 -te -2339101 311625 2227004 3134200 -ot Byte -of GTiff streams.shp streams.tif

अगला, जिस निकटता में हम रुचि रखते हैं वह सकारात्मक है और 50,000 मीटर से कम या उसके बराबर है। एक उपयुक्त डेटाटाइप एक अहस्ताक्षरित 16-बिट पूर्णांक है UInt16। इसके अलावा, यदि हम अधिकतम 65535 पर 'कोई डेटा नहीं' सेट करते हैं, तो हम स्ट्रीम सेल के लिए 0 मान बनाए रख सकते हैं।

यदि आवश्यक हो, तो आप 8-बिट अहस्ताक्षरित पूर्णांक में भी कदम रख सकते हैं UInt8और अभी भी ~ 200 मीटर निकटता परिशुद्धता है।

gdal_proximity.bat -srcband 1 -distunits GEO -values 1 -maxdist 50000 -nodata 65535 -ot UInt16 -of GTiff streams.tif proximity.tif

* ध्यान दें कि मैंने 50 मीटर सेल आकार का उपयोग किया है। Gdal_pro निकटता का उपभोग ~ 20GB RAM और मेरी मशीन पर ~ 5min लिया। यदि आप रैम सीमित हैं, तो इनपुट रैस्टर को प्रबंधनीय आकारों में विभाजित करें, जैसा कि अन्य ने नोट किया है।

gdal_pro निकटता परिणाम

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