Ich erstelle regelmäßig meine eigenen GeoTIFF-Raster mit GDAL in Python, zB:
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
Wenn das Ergebnis jedoch mit ArcCatalog / ArcGIS angezeigt wird, sieht es entweder schwarz oder grau aus, da es keine Statistiken enthält. Dies wird gelöst, indem Sie mit der rechten Maustaste auf das Raster klicken und "Statistiken berechnen ..." in ArcCatalog auswählen (es gibt verschiedene andere Möglichkeiten, dies zu tun) oder gdalinfo in einer Eingabeaufforderung verwenden:
gdalinfo -stats MyRaster.tif
wird generiert MyRaster.tif.aux.xml
, mit dessen Hilfe ArcGIS das Raster ordnungsgemäß skaliert. Die PAM-Datei (Persistent Auxiliary Metadata) enthält die Statistiken, insbesondere die Mindest- und Höchstwerte:
<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>
Meine Frage: Gibt es eine integrierte Methode, mit der GDAL eine Statistikdatei erstellen kann (außer mit dem gdalinfo -stats
Befehl)? Oder muss ich meine eigene schreiben?
quelle
band.GetStatistics(0,1)
die Statistiken tatsächlich berechnet und zu den GeoTIFF-Metadaten in der einzelnen Datei hinzugefügt werden. Keine weiteren Dateien erforderlich. Tests mit Esri-Produkten können jedoch nur mit ArcGIS 10.0 und höher durchgeführt werden, nicht mit ArcGIS 9.3 oder früher.Wenn die Statistiken bereits berechnet und intern in die Datei aufgenommen wurden,
gdalinfo -stats
erstellen Sie keine zusätzliche PAM-Statistikdatei (.aux.xml) für die Verwendung von GDAL 2.1.0. Aber es ist sehr einfach, die .xml für sich selbst zu implementieren. Im Folgenden werden einige integrierte Python-Module erläutert, die diese Aufgaben ausführen. Für mich selbst habe ich die ElementTree XML-API mit dem folgenden Code verwendet:Das Ergebnis sieht so aus:
quelle