Sto provando a imparare le corde dell'elaborazione delle immagini di telerilevamento usando i collegamenti Python GDAL e numpy. Come primo tentativo, sto leggendo un file geotiff di Landsat8, faccio una semplice manipolazione e scrivo il risultato in un nuovo file. Il codice seguente sembra funzionare correttamente, tranne per il fatto che il raster originale viene scaricato nel file di output, anziché nel raster manipolato.
Eventuali commenti o suggerimenti sono ben accetti, ma in particolare note sul perché il raster manipolato non viene visualizzato nel risultato.
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
Uso Python 2.7.1 su un computer Windows 7 a 32 bit.
gdainfo -stats original.tiff
egdal-config --version
anche questo potrebbe aiutare.