Ich versuche die Statistiken für ein Bild zu berechnen, das nur teilweise von Daten bedeckt ist. Ich würde gerne wissen, ob ComputeBandStats die Pixel mit dem gleichen Wert wie die Dateien nodata ignoriert.Berücksichtigt ComputeBandStats nodata?
Hier ist mein Code:
inIMG = gdal.Open(infile)
# getting stats for the first 3 bands
# Using ComputeBandStats insted of stats array has min, max, mean and sd values
print "Computing band statistics"
bandas = [inIMG.GetRasterBand(b+1) for b in range(3)]
minMax = [b.ComputeRasterMinMax() for b in bandas]
meanSD = [b.ComputeBandStats(1) for b in bandas]
print minMax
print meanSD
Für das Bild ohne das nodata Attribut der Ausgang ist:
Computing band statistics
[(0.0, 26046.0), (0.0, 24439.0), (0.0, 22856.0)]
[(762.9534697777777, 647.9056493556284), (767.642869, 516.0531530834181), (818.0449643333334, 511.5360132592902)]
Für das Bild mit nodata = 0 ist der Ausgang:
Computing band statistics
[(121.0, 26046.0), (202.0, 24439.0), (79.0, 22856.0)]
[(762.9534697777777, 647.9056493556284), (767.642869, 516.0531530834181), (818.0449643333334, 511.5360132592902)]
Die Min- und Max-Werte haben sich so geändert, dass 0 nicht mehr min ist, was sinnvoll ist, weil in der zweiten ve rsion es ist nodata und daher nicht von ComputeRasterMinMax() betrachtet. Der Mittelwert und die Standardabweichung haben sich jedoch nicht geändert.
Bedeutet dies, dass ComputeBandStats die Nodata-Werte nicht ignoriert?
Gibt es eine Möglichkeit, ComputeBandStats zu zwingen, die Nodata-Werte zu ignorieren?
Danke, das ist genau das, was ich brauchte! Sie legen den Parameter für ComputeStatistics auf False fest. Weißt du, was der Parameter ist, und gibt es eine Dokumentation, wo ich es nachschlagen kann? –
Ich finde, dass ich in der Regel die Python-Bindungen herausfinden kann, indem ich mir die Originaldokumente anschaue: http://www.gdal.org/classGDALRasterBand.html#a48883c1dae195b21b37b51b10e910f9b. Der Parameter ist 'bApproxOK'; wenn "True", werden die Statistiken aus den Übersichten oder einer Teilmenge der Datei berechnet, wenn sie "False" sind, werden sie unter Verwendung aller tatsächlichen Datenwerte der Daten berechnet. – Benjamin