RasterCalc: от Python к C++

Вчера обнаружил, что моё расширение RasterCalc было анонсировано только в списках рассылки QGIS. На ГИС-Лабе, если не считать двух неопубликованных статей, ничего нет. Ума не приложу как это мог забыть о нем? Хотя надо признать, в то время было очень много работы: сам RasterCalc, экспериментальная ветка GDAL Tools, Photo2Shape и еще много всего. На январь пришелся и выход QGIS 1.4… Знаю, слабое оправдание, особенно если учесть, что другие расширения анонсировались везде, но другого нет.

Итак… RasterCalc — удобный и функциональный калькулятор растров. Написан на Python, анонс в списках рассылки состоялся 16 января 2010 года.

В основе RasterCalc лежит идея расширения RasterLang (автор Barry Rowlingson). Главное отличие от последнего — дружественный интерфейс и привычный синтаксис выражений (любите ли вы LISP так, как его любит Барри?). Еще мы добавили несколько новых возможностей: сохранение и загрузка выражений, «шаблоны» операций; немного расширили набор доступных функций и действий.

Шли недели и месяцы (чуть было не написал «годы»), ничто не предвещало потрясений… И вот, как гром среди ясного неба — Marco Hugentobler и Tim Sutton решили сделать RasterCalc частью QGIS analysis library. Это позволит использовать его возможности из других расширений, уберет зависимость от numpy, pyparsing и других библиотек.

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

  • нет поддержки «шаблонов» (операции Difference и NDVI)
  • результат сохраняется только с типом данных float32
  • нет возможности загружать и сохранять выражения

В то же время, добавлены новые возможности:

  • можно задавать желаемое разрешение и охват результата, что позволяет использовать в одном выражении растры с разным разрешением. При необходимости выполняется автоматический пересчет растра к заданному разрешению
  • появилась возможность выбора формата для итогового растра

Опробовать новый функционал можно применив патч. Калькулятор появится в меню «Слой → Raster calculator».

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