In der Dokumentation für gdal_calc wird der Befehlszeilen-Rasterrechner mit Numpy-Syntax angegeben . Später gibt es einige Beispiele, wo in einem von ihnen:
gdal_calc.py -A input.tif --outfile = result.tif --calc = "A * (A> 0)" --NoDataValue = 0 - bedeutet , dass Werte von Null und darunter auf Null gesetzt werden
Leider gibt es kein Beispiel für logische Operatoren wie:
--calc = "A * (A> 0 und A> B)" - bedeutet dass A , wenn A größer als Null und größer als B ist, und der Rest auf Null gesetzt wird
Beyogen auf Numpy / Scipy-Logikfunktionen würde ich erwarten, logische Operatoren wie folgt zu schreiben:
--calc = "A * logisch_und (A> 0, A> B)"
Ich habe es versucht und es scheint zu funktionieren, aber ich möchte sicher sein, dass dies korrekt ist.
In ähnlicher Weise, wenn Sie ein Minimum von A und B wünschen:
--calc = "A * (A <= B) + B * (A> B)"
Sie können einfach schreiben:
--calc = "Minimum (A, B)"
Mein Problem ist, dass ich kein Kochbuch finde, um sicherzustellen, dass ich das richtig mache. Gibt es ein gutes Kochbuch mit fortgeschrittenen Beispielen dafür, was mit gdal_calc möglich ist und was nicht?
In Anlehnung an Benjamins Antwort können Sie logical_or () oder logical_and () verwenden. Siehe http://docs.scipy.org/doc/numpy/reference/routines.logic.html . Das folgende Beispiel hat für mich gut funktioniert. Dies setzt alle Werte zwischen 177 und 185 (einschließlich) auf 0, was dann als Knoten behandelt wird.
quelle
Ich hatte ein Raster mit Werten zwischen -1 und 3, wobei Null eine gültige Zahl ist. Ich hatte einige Probleme damit, einen gdal_calc-Ausdruck zu erstellen, so dass sich diese schnelle und wütende Lösung ergab.
quelle