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"으로 모든 나노 값을 0으로 설정해야했습니다. 그리고 당신이 말했듯이 나는 0 값을 가려야했습니다. 그 후에 계산이 작동하고 나는 이제 멋지게 분류 된 이미지를가집니다. 문제는 Gdal 또는 Gtiff 드라이버와 관련이있는 것 같지만 무엇을 모릅니다. – Majkiboy
@Majkiboy NoDataValue가'np.nan' 인 경우 NoData 픽셀을 0으로 설정하는 대신 np.isnan을 사용하여 마스크를 만드는 것이 더 안전 할 수 있습니다. 0 값이 이미 래스터에서 유효하면 거짓으로 무시 될 수 있습니다. –