我想要獲取tif光柵文件的最大和最小像素值。GDAL:GetMaximum和GetMinimum不返回任何值
我使用GetMaximum()和GetMinimum()方法,但他們返回任何結果,因此我得到的錯誤是: TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType'
該文件是用於測試的小型TIF光柵。我確實在幾天前的其他柵格上也遇到了同樣的錯誤。
這是我一直在努力:
from osgeo import gdal
driver = gdal.GetDriverByName('GTiff')
in_file = gdal.Open("L8_field.tif")
band1 = in_file.GetRasterBand(1)
barray = band1.ReadAsArray()
# Getting the interval value and setting the classes
max_value = band1.GetMaximum()
min_value = band1.GetMinimum()
tot_classes = 5
class_1 = class_x + min_value
class_x = (max_value - min_value)/tot_classes
class_2 = (class_x * 2) + min_value
class_3 = (class_x * 3) + min_value
class_4 = (class_x * 4) + min_value
class_5 = max_value
...
我使用這光柵分類。所以有更多的代碼實際上對它進行分類。這段代碼旨在抓住相等的時間間隔。
我缺少什麼?
numpy解決了它!非常感謝你。我必須首先用「barray [np.isnan(barray)] = 0」將所有nan值設置爲0。正如你所說,我不得不掩蓋0值。之後,計算工作,我現在有一個很好的分類圖像。這個問題似乎與Gdal或Gtiff驅動程序有關,但我不知道是什麼。 – Majkiboy
@Majkiboy如果NoDataValue是'np.nan',那麼使用'np.isnan'來製作蒙板,而不是將NoData像素設置爲0,可能會更安全。如果數值0在光柵內已經有效,那麼這些像素可能會被錯誤地忽略。 –