как в питоне файл tif привести к матрице

Нужно чтобы программа брала файлы типа tiff и переводила их в матрицы, для того чтобы в дальнейшем посчитать ndvi.

  from pathlib import Path
   from osgeo import gdal_array, gdal
   import numpy

   if __name__ == '__main__':
    base = Path(r'C:\Users\Evdokiya\3D Objects\example')
    f_b4, f_b5 = base.glob('**/*B4.TIF'), base.glob('**/*B5.TIF')
    F4 = str(list(f_b4)[0])
    F5 = str(list(f_b5)[0])
print('f_b4 = ',F4)

file4 = ''.join(F4.rpartition('\\')[-1:]) # отделает название файла от всего пути 
file5 = ''.join(F5.rpartition('\\')[-1:]) # отделает название файла от всего пути 
print(file4)
print(file5)

dataset4 = gdal.Open(file4)
print(dataset4.GetMetadata())
print("число растров", dataset4.RasterCount)
print("ширина", dataset4.RasterXSize)
print("высота", dataset4.RasterYSize)
# получаем весь растр целиком
raster4 = dataset4.ReadAsArray()
# получаем отдельный канал
gdalBand4 = dataset4.GetRasterBand( 1 )
print("gdalBand4 =", gdalBand4)
Red = gdalBand4.ReadAsArray()
print("Red = ", Red)
dataset5 = gdal.Open(file5)
raster5 = dataset5.ReadAsArray()
gdalBand5 = dataset5.GetRasterBand( 1 )
NIR = gdalBand5.ReadAsArray()
print(NIR)
     # Операция ошибки предупреждения
gdal_array.numpy.seterr(all="warn")
     # ndvi
ndvi = []
for i in range(len(Red)):
    ndvi_1 = ((NIR[i] - Red[i]) * 0.1) / ((NIR[i] + Red[i] + 1E-6) * 0.1)
    ndvi.append(gdal_array.numpy.nan_to_num(ndvi_1))
print(ndvi)

Проблема в том, что Red выдает ответ None, что делать в таком случае не знаю.


Ответы (0 шт):