2015-06-09 3 views
2

Я искал некоторые плохие данные в растровом изображении, используя GDAL с gdal_calc.py. Я пытаюсь клип значение A в -100, как это:max() с базовыми операторами

max(A, -100) 

Однако только основные операторы (+-/*) и логические операторы (><, они возвращают 0 или 1) не допускается. Есть ли способ реализовать это? Есть, насколько возвращение 0 для значений менее -100

A*(A>-100) 

ответ

3

еще один:

(A+100)*(A>-100) - 100 

здесь значение мин будет смещаться в 0, чтобы соответствовать нижней границе, а затем смещается назад до -100.

+0

Это быстрее, чем два других с одним меньшим умножением. – nathancahill

+2

Nice ... 'max (a, b) = max (a-b, 0) + b = (a-b) * (a-b> 0) + b = (a-b) * (a> b) + b'. –

1

Может быть двойной трюк, изменив выражение A * (A > -100) + (-100) * (A < -100)?

+0

Спасибо, что работает. Хотя немного медленнее, чем другой ответ. Жаль, что я не смог принять – nathancahill

1

А * (А> - 100) + (-100 * (А < -100))

если А больше, чем -100, это сводится к A + 0 , если А меньше -100 это сводится к 0 + (-100)

Смежные вопросы