W dokumentacji gdal_calc podano kalkulator rastrowy wiersza poleceń ze składnią numpy . Później jest kilka przykładów, w których w jednym z nich:
gdal_calc.py -A input.tif --outfile = result.tif --calc = "A * (A> 0)" --NoDataValue = 0 - oznacza ustawione wartości od zera i poniżej na zero
Niestety nie ma przykładu operatorów logicznych, takich jak:
--calc = "A * (A> 0 i A> B)" - oznacza utrzymanie A, jeśli A większe zero i większe B, a resztę ustawić na zero
Na podstawie funkcji logicznych Numpy / Scipy spodziewałbym się pisać operatorów logicznych jako:
--calc = "A * logiczny_i (A> 0, A> B)"
Próbowałem tego i wydaje się, że działa, ale chciałbym mieć pewność, że jest to poprawne.
W podobny sposób, jeśli chcesz minimum A i B:
--calc = „A * (A <= B) + B * (A> B)”
Możesz po prostu napisać:
--calc = „minimum (A, B)”
Mój problem polega na tym, że nie mogę znaleźć żadnej książki kucharskiej, aby upewnić się, że dobrze to zrobię. Czy jest jakaś dobra książka kucharska z zaawansowanymi przykładami tego, co jest i nie jest możliwe w gdal_calc?
Kontynuując odpowiedź Benjamina, możesz użyć logical_or () lub logical_and (). Zobacz http://docs.scipy.org/doc/numpy/reference/routines.logic.html . Poniższy przykład działał dla mnie dobrze. To ustawia wszystkie wartości od 177 do 185 (włącznie) na 0, co jest następnie traktowane jako nodata.
źródło
Miałem raster, w którym wartości mieściły się w zakresie od -1 do 3, gdzie zero jest poprawną liczbą. Miałem pewne problemy z wyrażeniem gdal_calc, więc zrobiłem to szybkie i wściekłe rozwiązanie.
źródło