J'essaie d'apprendre les ficelles du traitement d'image de télédétection en utilisant les liaisons Python GDAL et numpy. Dans un premier temps, je lis un fichier géotiff Landsat8, je fais une manipulation simple et j'écris le résultat dans un nouveau fichier. Le code ci-dessous semble fonctionner correctement, sauf que le raster d'origine est sauvegardé dans le fichier de sortie, plutôt que le raster manipulé.
Tous les commentaires ou suggestions sont les bienvenus, mais en particulier les notes expliquant pourquoi le raster manipulé n'apparaît pas dans le résultat.
import os
import gdal
gdal.AllRegister()
file = "c:\~\LC81980242015071LGN00.tiff"
(fileRoot, fileExt) = os.path.splitext(file)
outFileName = fileRoot + "_mod" + fileExt
ds = gdal.Open(file)
band = ds.GetRasterBand(1)
arr = band.ReadAsArray()
[cols, rows] = arr.shape
arr_min = arr.Min()
arr_max = arr.Max()
arr_mean = int(arr.mean())
arr_out = numpy.where((arr < arr_mean), 10000, arr)
driver = gdal.GetDriverByName("GTiff")
outdata = driver.Create(outFileName, rows, cols, 1, gdal.GDT_UInt16)
outband = outdata.GetRasterBand(1)
outband.WriteArray(arr_out)
outdata = None
print arr_min
> 0
print arr_max
> 65535
print arr_mean
> 4856
J'utilise Python 2.7.1 sur une machine Windows 7 32 bits.
gdainfo -stats original.tiff
etgdal-config --version
aussi cela pourrait aider.