Условный оператор в RasterCalc

Не смотря на наличие встроенного в QGIS растрового калькулятора (о нем писал пару раз), разработанный мной RasterCalc все еще пользуется популярностью. Вот уж не знаю чем это объяснить: то ли дело в привычках, то ли мой калькулятор более удобный… Жутко интересно, в чем же причина. Наверное, надо опрос сделать.

К чему это предисловие? Меня уже давно терроризируют просьбами добавить в растровый калькулятор поддержку условных операторов, особенно усердствует один товарищ из Испании. И как я не ссылался на занятость в других проектах, как ни старался отвертеться, ничего не помогало. После небольшого затишья атаки повторялись. Видимо решили брать измором.

Не спасло и включение патча, добавляющего операторы сравнения (прислал Ghislain Picard). Этого было мало и это было не то. Народ жаждал большего, чего-то в стиле r.mapcalc из GRASS и желательно с поддержкой такого же синтаксиса.

Что ж… вынужден признать, они своего добились. Сегодня эта вожделенная фича была реализована. Синтаксис, правда, не совпадает с синтаксисом r.mapcalc, т.к. мне не хочется сильно заморачиваться с разбором и без того сложных конструкций. Теперь можно делать такие вещи как:

  • сравнение значений пикселей с некоторой величиной и замену значений пикселей, удовлетворяющих условию, на другую величину
  • сравнение значений пикселей с соответствующими пикселями другого канала/растра и замену значений пикселей, удовлетворяющих условию, на соответствующие значения еще одного растра/канала
  • другие похожие извращения

Вся эта красота пока лежит в моем локальном репозитории. Коммитить в публичный буду только после обновления документации. А делать это ой как не хочется. Ну не люблю я писать, будь это сочинение, статья или что-то еще. Бывает такое, что пишется легко, но редко.

Есть еще одна причина, точнее даже две. Во-первых, думаю о том, чтобы немного оптимизировать калькулятор: операции над большими растрами основательно грузят систему. А во-вторых, тот самый активный испанец буквально на днях еще один feature request сделал, и у меня такое предчувствие, что добиваться его реализации он будет с таким же упорством.

Но окончательное решение еще не принял. Может, достаточно и одного условного оператора и не стоит связываться с рефакторингом и оптимизацией? Или все таки немного подождать, выпустить еще более мощный калькулятор и окончательно закрепить успех первых версий?