डेम रेखापुंज में मूल्य = = "नोड्टा" के साथ सभी पिक्सेल कैसे सेट करें?


28

मेरे पास लगभग 3000 और -0.0003 के बीच पिक्सेल मूल्यों के साथ एक DEM रेखापुंज है। मुझे 0 और smaler (<= 0) के मान के साथ सभी पिक्सेल सेट करने की आवश्यकता है "nodata" (बाद के रेखीय गणना के लिए और फ़ाइलों को कम करने के लिए)।

मेरे लिए ऐसा लगता है कि यह रेखापुंज कैलकुलेटर (पिक्सेल का निर्धारित मूल्य <= 0 से "नोडटा") या एक पुनर्वर्गीकरण (पिक्सेल का मूल्य = <"0 से" नोडटा ") और अन्य सभी मान रखने के लिए एक कार्य है, लेकिन मैं नहीं तकनीकी जानकारी।


मुझे <0 से "नोडटा" के मान के साथ सभी पिक्सेल सेट करने की भी आवश्यकता है। तो vascobnunes से पोस्ट मेरी मदद नहीं कर रहा है।
एमएपी

क्षमा करें, लेकिन इसकी शैली को बदलने में मेरी मदद नहीं कर रहा है कि रेखापुंज कैसे प्रदर्शित होता है। मुझे अपने रिस्तेफिले को संपादित करने की आवश्यकता है।
एमएपी

टिप्पणियों और क्लोजर सुझावों से ऐसा लगता है कि आपको अपने प्रश्न को ठीक से स्पष्ट करने के लिए संपादित करना चाहिए कि आप क्या चाहते हैं और आपने पहले से ही क्या प्रयास किया है।
PolyGeo

जवाबों:


29

मुझे एक-उपकरण समाधान नहीं मिला, लेकिन आप पहले एक निश्चित सीमा से नीचे के सभी मानों को शून्य करने के लिए रेखापुंज कैलकुलेटर का उपयोग कर सकते हैं और उसके बाद gdal_translate के साथ -a_nodata 0 का उपयोग करके नोड को 0 में बदल सकते हैं।

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

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


17

NULL की सीमा निर्धारित करने के लिए यहाँ GRASS मेपलक अभिव्यक्तियाँ हैं:

r.mapcalc "dem_corrected = if(dem<=0, null(), dem)"

महान, मेरे लिए काम करता है!
इल फोंटा

16

यह रास्टर कैलकुलेटर में QGIS में एक चरण में किया जा सकता है।

QGIS3 में, "x" नामक एक रेखापुंज परत के लिए, निम्नलिखित अभिव्यक्ति का उपयोग करें:

(("x">0)*"x") / (("x">0)*1 + ("x"<=0)*0)

यह ट्रिक रैस्टर मान x> 0 को अनुपात x / 1 = x में मैप करता है, और रैस्टर मान x <= 0 के अनुपात में 0/0 = NaN। यह NaN FLOAT_MIN (उर्फ -3.402832 ... e + 38) के रूप में प्रदान किया जाता है, यदि रेखापुंज 4-बाइट फ्लोट है।

अजीब तरह से यह सवाल कुछ समय के लिए लगता है, (जहां तक ​​मेरी त्वरित Google खोज आज दिखाती है) अधिकांश उत्तरदाताओं ने कहा कि यह एक ही चरण में नहीं किया जा सकता है। यह निश्चित रूप से इस तरह हैक करने की आवश्यकता नहीं होनी चाहिए। QGIS प्रलेखन बेहतर भी हो सकता है।


10

डोमिनिक को बहुत धन्यवाद। मेरा पहला उत्तर QGIS 2.8.3 के लिए सही नहीं है (अभिव्यक्ति नोडाटा इनपुट के "myraster@1" > 0लिए 0 या 1 रिटर्न करती है, नोडाटा के लिए इनपुट के लिए यह नोडाटा देता है )।

निम्नलिखित QGIS रेखापुंज कैलक्यूलेटर अभिव्यक्ति पर्याप्त (रेखापुंज परत "myraster" नाम), होना चाहिए, क्योंकि QGIS रेखापुंज कैलक्यूलेटर सभी पिक्सल है कि करने के लिए शर्त को पूरा नहीं करती सेट nodata :

("myraster @ 1"> 0) * "myraster @ 1"

निम्नलिखित समाधान https://docs.qgis.org/2.8/en/docs/training_manual/processing/no_data.html पर आधारित है , और SAGA 2.1.2 के साथ QGIS 2.8.3 के लिए काम करता है।

QGIS प्रसंस्करण में, एसएजीए रेखापुंज कैलकुलेटर का उपयोग करें और फॉर्मूला में निम्नलिखित दर्ज करें :

ifelse(g1=0, 0/0, ifelse(g1<0, 0/0, g1))

या

ifelse(a=0, 0/0, ifelse(a<0, 0/0, a))

यह 0 या उससे कम के सभी मानों को नोडटा (0/0) में बदल देगा।


यह काम नहीं करता है क्योंकि पिक्सेल जो स्थिति को संतुष्ट नहीं करते हैं वे 0 हैं, नोडाटा नहीं
डोमिनिक

सुपर। इसका उपयोग रैस्टर वैल्यू फिल्टर के लिए कर सकते हैं: उदाहरण के लिए फ़िल्टर (0.5; 23]: ifelse (g1 <0.5, 0/0, ifelse (g1> 23, 0/0, g1))
lolipop

10

आप परत को भी सहेज सकते हैं (दायाँ क्लिक करें, इस रूप में सहेजें ...) और एक नोडा श्रेणी निर्दिष्ट करें। यह मूल नोडता को बनाए रखेगा और मूल्यों की निर्दिष्ट सीमा के लिए नए नोडटा बनाएगा।


यह सबसे अच्छा समाधान है
अलेक्जेंडर

5

मैं ने वही समस्या थी, लेकिन था दोनों मूल्यों मैं डेटा-रहित कन्वर्ट करने के लिए करना चाहता था और रेखापुंज में मौजूदा डेटा-रहित मूल्यों।

परिणाम पहचानें

मैं मदद के लिए इस पृष्ठ पर आया था, लेकिन मुझे लगता है कि यहां पहुंच के लिए एक चेतावनी है। @Underdark और @Micha के तरीके केवल वहीं काम करते हैं, जहां रेखापुंज में कोई मौजूदा डेटा-मूल्य नहीं हैं।

इसे पूरा करने के लिए, आपको नो-डेटा मानों और उन मानों को परिवर्तित करना होगा, जिन्हें आप नो-डेटा में बदलना चाहते हैं, एक सुसंगत संख्या में। इसके बाद @underdark के दूसरे चरण का उपयोग करना ठीक है।

ऐसा करने के लिए, एक ही समय में एक सामान्य संख्या (जैसे -999) के मूल्यों और नो-डेटा मानों को परिवर्तित करने के लिए प्रोसेसिंग टूलबॉक्स> रिकॉलिज़्ड ग्रिड वैल्यू (एसएजीए) का उपयोग करें। विशेष रूप से, विधि "रेंज" का उपयोग करें और सीमा निर्दिष्ट करें। फिर नो-डेटा मानों को बदलने के लिए, यह समान मान (जैसे -999) चुनें। अन्य मानों को अनचेक करें। यह एकल मान परिवर्तन या अधिक जटिल परिवर्तनों के लिए भी काम करता है।

फिर @underdark की विधि का पालन करें, और रेखापुंज का उपयोग करके रेखापुंज करें> रूपांतरण> अनुवाद करें, और आपके द्वारा उपयोग किए गए मान में प्रवेश करें (जैसे -999), दर्ज न करें।


-3

रेखापुंज पर राइट क्लिक करें, रेखापुंज गुणों पर जाएं, तीसरा विकल्प "पारदर्शिता" चुनें, जिसमें कोई डेटा मान टैब नहीं है, अतिरिक्त मान 0 जोड़ें और क्लिक करें लागू करें। यह आर्कगिस में समान विकल्प "प्रदर्शन पृष्ठभूमि मूल्य" है।


4
अच्छी विधि नहीं। आप वास्तव में डेटा को बदल नहीं रहे हैं, इसलिए यदि आपको आँकड़ों की गणना करने की आवश्यकता है या विश्लेषण करना है तो परिणाम गलत होंगे
khafen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.