GDAL में किए गए GeoTIFF में आर्क / QGIS में लोड होने पर न्यूनतम / अधिकतम रेंज नहीं है


11

मैं जियोटीफ़ ड्राइवर के साथ GDAL में कुछ फ़्लोटिंग पॉइंट रस्टर्स बना रहा हूँ। जब मैं परिणामस्वरूप छवियों को क्यूजीआईएस या आर्क में लोड करता हूं तो डिफ़ॉल्ट सिम्बोलोजी मिनट को -3.40282e38 और अधिकतम 3.40282e38 पर रख देता है, इसलिए रेखापुंज बिल्कुल ग्रे दिखता है। क्या कोई तरीका है कि मैं वास्तविक सीमा को सीधे GeoTIFF में लिख सकूं, जब इसका जीआईएस प्रोग्राम में लोड किया जाए तो यह अपने आप हिस्टोग्राम को अच्छी तरह से माप लेता है? मैंने इस तरह एक डिफ़ॉल्ट हिस्टोग्राम बनाने की कोशिश की है:

rasterMin, rasterMax = raster.GetRasterBand(1).ComputeRasterMinMax()
raster.GetRasterBand(1).SetDefaultHistogram(rasterMin, rasterMax, 255)

लेकिन मुझे एक त्रुटि मिलती है जो बाध्यकारी मुद्दे की तरह दिखती है:

  File "/usr/lib/python2.6/dist-packages/osgeo/gdal.py", line 846, in SetDefaultHistogram
    return _gdal.Band_SetDefaultHistogram(self, *args)
TypeError: not a sequence

जो मैं कर सकता था, उस पर कोई सुझाव या अगर मुझसे कोई गलती हुई हो तो?

जवाबों:


8

यदि आप डेटा उत्पन्न कर रहे हैं, तो आप मक्खी पर न्यूनतम और अधिकतम का ट्रैक रख सकते हैं। यदि आपके पास स्रोत डेटा का प्रत्यक्ष नियंत्रण नहीं है, तो कहें कि यदि आप मौजूदा डेटा कंपोज़ कर रहे हैं, तो उपयोग ComputeRasterMinMax(0)करना ठीक है।

किसी भी तरह से, आपके द्वारा आपके न्यूनतम और अधिकतम मान प्राप्त करने के बाद, आपको SetStatistics()बैंड पर कॉल करना चाहिए , और सुनिश्चित करें कि आपने अपना डेटासेट Noneतब सेट किया है जब आपने यह सुनिश्चित करने के लिए कि सब कुछ डिस्क पर लिखा हो।

इसके अलावा, मेरे दिमाग के पीछे कुछ मुझे बता रहा है कि dataset.GetRasterBand(1).<some band function>GDAL पायथन बैंड के संदर्भों को जिस तरह से हैंडल करता है, वह ठीक से काम नहीं करेगा। मुझे विवरण याद नहीं है, लेकिन कुछ समय पहले GDALDev मेलिंग सूची में कुछ था। तो स्पष्ट रूप से एक बैंड चर बनाने के लिए सबसे अच्छा है: band = dataset.GetRasterBand(1)फिर कॉल करें band.SetStatistics(min, max, mean, stddev)


धन्यवाद, यह चाल चली, और संदर्भ के लिए धन्यवाद। वैसे, मैं बिना किसी समस्या के अस्थायी चर के बिना बैंड संदर्भ को घोंसला बनाने में सक्षम था।
रिच

ध्यान दें कि band.ComputeStatistics(0)आंकड़े भी संग्रहीत करते हैं। यह एक आसान 1-लाइन है।
माइक टी

1

मुझे GDAL का उपयोग करने के तरीके के बारे में पता नहीं है, लेकिन आप आर्क में 'गणना के आँकड़ों' को कॉल करने के लिए अजगर का उपयोग कर सकते हैं।


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