В документации по gdal_calc указан растровый калькулятор командной строки с пустым синтаксисом . Позже есть несколько примеров, где в одном из них:
gdal_calc.py -A input.tif --outfile = result.tif --calc = "A * (A> 0)" --NoDataValue = 0 - означает установить значения от нуля и ниже до нуля
К сожалению, нет примера для логических операторов, таких как:
--calc = "A * (A> 0 и A> B)" - означает оставить A, если A больше нуля и больше B, и установить остаток на ноль
Основываясь на логических функциях Numpy / Scipy, я ожидал бы написать логические операторы как:
--calc = "А * logical_and (А> 0, A> B)"
Я попробовал это, и это, кажется, работает, но я хотел бы быть уверен, что это правильно.
Аналогичным образом, если вы хотите минимум A и B:
--calc = "А * (А <= В) + В * (А> В)"
Вы можете просто написать:
--calc = "минимальный (А, В)"
Моя проблема в том, что я не могу найти кулинарную книгу, чтобы убедиться, что я правильно понял. Есть ли хорошая поваренная книга с продвинутыми примерами того, что можно и нельзя с gdal_calc?
Исходя из ответа Бенджамина, вы можете использовать logic_or () или logic_and (). См. Http://docs.scipy.org/doc/numpy/reference/routines.logic.html . Следующий пример работал хорошо для меня. Это устанавливает все значения между 177 и 185 (включительно) равными 0, что затем обрабатывается как nodata.
источник
У меня был растр, где значения находились в диапазоне от -1 до 3, где ноль - действительное число. У меня были некоторые проблемы с созданием выражения gdal_calc, поэтому я сделал это быстрое и яростное решение.
источник