Regularmente creo mis propios rásteres GeoTIFF con GDAL en Python, por ejemplo:
from osgeo import gdal
from numpy import random
data = random.uniform(0, 10, (300, 200))
driver = gdal.GetDriverByName('GTiff')
ds = driver.Create('MyRaster.tif', 200, 300)
band = ds.GetRasterBand(1)
band.WriteArray(data)
ds = band = None # save, close
sin embargo, cuando el resultado se ve con ArcCatalog / ArcGIS, se ve negro o gris, ya que no tiene estadísticas. Esto se resuelve haciendo clic derecho en el ráster y eligiendo "Calcular estadísticas ..." en ArcCatalog (hay varias otras formas de hacerlo), o usando gdalinfo en un símbolo del sistema:
gdalinfo -stats MyRaster.tif
generará MyRaster.tif.aux.xml
, que ArcGIS utiliza para escalar correctamente el ráster. El archivo PAM (metadatos auxiliares persistentes) contiene las estadísticas, especialmente los valores mínimos y máximos:
<PAMDataset>
<PAMRasterBand band="1">
<Metadata>
<MDI key="STATISTICS_MINIMUM">0</MDI>
<MDI key="STATISTICS_MAXIMUM">10</MDI>
<MDI key="STATISTICS_MEAN">5.0189833333333</MDI>
<MDI key="STATISTICS_STDDEV">2.9131294111984</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>
Mi pregunta: ¿hay una forma integrada de hacer que GDAL cree un archivo de estadísticas (que no sea usar el gdalinfo -stats
comando)? ¿O necesito escribir el mío?
fuente
band.GetStatistics(0,1)
realmente calculará las estadísticas y las agregará a los metadatos de GeoTIFF en el archivo único. No se requieren otros archivos. Sin embargo, a partir de las pruebas con productos Esri, solo funciona con ArcGIS 10.0 y versiones posteriores, no con ArcGIS 9.3 o anteriores.Si las estadísticas ya están calculadas e incluidas en el archivo internamente,
gdalinfo -stats
no creará un archivo de estadísticas PAM adicional (.aux.xml) para usar GDAL 2.1.0. Pero es muy fácil implementar el .xml por ti mismo. Aquí hay algunos módulos integrados de Python explicados para hacer eso. Para mí, utilicé la API XML de ElementTree con el siguiente código:El resultado se ve así:
fuente