Растровая арифметика в QGIS с помощью RasterCalc: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показана 1 промежуточная версия 1 участника)
Строка 17: Строка 17:
Проще всего тем, кто пользуется инсталлятором OSGeo4W — в нем есть все необходимое. Нужные пакеты называются pyparsing и gdal-python. Если используется официальный установщик «все-в-одном» (не OSGeo4W): потребуется скачать и установить [http://pyparsing.wikispaces.com pyparsing], все остальные модули уже включены в инсталлятор.
Проще всего тем, кто пользуется инсталлятором OSGeo4W — в нем есть все необходимое. Нужные пакеты называются pyparsing и gdal-python. Если используется официальный установщик «все-в-одном» (не OSGeo4W): потребуется скачать и установить [http://pyparsing.wikispaces.com pyparsing], все остальные модули уже включены в инсталлятор.


Исходный код модуля можно получить через [https://github.com/nextgis/RasterCalc репозиторий на GitHub] или выполнив команду
Исходный код модуля можно получить через [https://github.com/nextgis/RasterCalc репозиторий на GitHub] или выполнив команду:


<pre>git clone git@github.com:nextgis/RasterCalc.git</pre>
<pre>git clone git@github.com:nextgis/RasterCalc.git</pre>
Строка 40: Строка 40:
# выпадающий список для управления форматом пикселей итогового растра
# выпадающий список для управления форматом пикселей итогового растра
# поле для ввода имени итогового файла
# поле для ввода имени итогового файла
# флажок, позволяющий загружить результат вычислений на карту
# флажок, позволяющий загрузить результат вычислений на карту
# кнопки запуска вычислений и закрытия окна
# кнопки запуска вычислений и закрытия окна


Строка 47: Строка 47:
Некоторые распространенные операции доступны в виде «шаблонов». После выбора такого «шаблона» из выпадающего списка, в область ввода вставляется заготовка, в которой условные растры нужно заменить своими.
Некоторые распространенные операции доступны в виде «шаблонов». После выбора такого «шаблона» из выпадающего списка, в область ввода вставляется заготовка, в которой условные растры нужно заменить своими.


В процессе набора выражения осуществляется его проверка. При наличии ошибок в строку сообщений выводится соответсвующий текст, а кнопка «Рассчитать» блокируется.
В процессе набора выражения осуществляется его проверка. При наличии ошибок в строку сообщений выводится соответствующий текст, а кнопка «Рассчитать» блокируется.


При помощи кнопок быстрого ввода доступны:
При помощи кнопок быстрого ввода доступны:

Текущая версия от 17:40, 20 ноября 2013

Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/rastercalc.html


Растровая арифметика в QGIS.

RasterCalc — легкий в использовании и функциональный калькулятор растров реализованный как расширение для свободной ГИС с открытым кодом — QGIS.

Замечания по установке

Расширение доступно из официального репозитория.

RasterCalc разработан для QGIS версии 1.0.0 и старше. Для своей работы требует наличия следующих Python-модулей:

  • pyparsing — библиотека синтаксического анализа
  • osgeo.gdal — Python интерфейс к библиотеке GDAL

Если эти модули отсутсвуют, при попыке запуска расширения появится сообщение об ошибке.

Проще всего тем, кто пользуется инсталлятором OSGeo4W — в нем есть все необходимое. Нужные пакеты называются pyparsing и gdal-python. Если используется официальный установщик «все-в-одном» (не OSGeo4W): потребуется скачать и установить pyparsing, все остальные модули уже включены в инсталлятор.

Исходный код модуля можно получить через репозиторий на GitHub или выполнив команду:

git clone git@github.com:nextgis/RasterCalc.git

Работа с расширением

После подключения и запуска расширения с помощью кнопки

Rastercalc-icon.png

появится окно, похожее на калькулятор:

Rastercalc-02.png

В окне расположены следующие элементы:

  1. список растров, загруженных в проект. Растры сгруппированы по размерам
  2. список каналов растра, заполняется автоматически при выборе растра
  3. кнопки для быстрой вставки функций. Тут же находится выпадающий список шаблонов выражений
  4. область ввода, в которой по мере набора отображается выражение. Поддерживается копирование и вставка текста
  5. строка сообщений, в которой отображаются ошибки, предупреждения и информационные сообщения
  6. кнопка очистки области ввода
  7. выпадающий список для управления форматом пикселей итогового растра
  8. поле для ввода имени итогового файла
  9. флажок, позволяющий загрузить результат вычислений на карту
  10. кнопки запуска вычислений и закрытия окна

Формат выражений — традиционный, как в математике; есть поддержка скобок, в том числе вложенных. Имена растров должны заключаться в квадратные скобки («[]»), после имени растра через «собаку» («@») обязательно указывается номер канала. Вставка имени растра выполняется по двойному клику на соответствующем элементе списка растров, при этом автоматически будет использован (и добавлен к имени) 1й канал. Вставка выбранного растра вместе с нужным номером канала возможна по двойному клику на нужный номер канала в списке каналов.

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

В процессе набора выражения осуществляется его проверка. При наличии ошибок в строку сообщений выводится соответствующий текст, а кнопка «Рассчитать» блокируется.

При помощи кнопок быстрого ввода доступны:

  • арифметические действия (+, -, *, /)
  • тригонометрические функции (sin, cos, tan, asin, acos, atan)
  • натуральный логарифм (log), экспонента (exp) и возведение в степень (^)
  • вставка скобок, знак взятия канала

Реализованы, но не имеют кнопок быстрой вставки (т.е. вводить необходимо вручную):

  • операторы сравнения (<, >, =, !=, <=, >=)
  • условные операторы (lt — меньше, gt — больше, eq — равно, ne — не равно, le — меньше или равно, ge — больше или равно)

Операторы сравнения позволяют попиксельно сравнить канал растра с некоторой величиной или другим каналом этого же или любого другого растра. Результатом сравнения будет растр, в котором все пиксели, удовлетворяющие условию получат значение 1, а все остальные, соответственно, 0.

Условные операторы являются дальнейшим развитием операторов сравнения. Оператор принимает три аргумента:

  1. растр, который сравнивается
  2. величина, с которой сравниваем
  3. величина, используемая для замены значений

Второй и третий аргументы могут быть числом, произвольным каналом растра (в этом случае выполняется попиксельное сравнение и/или замена), выражением.

Рассмотрим использование условных операторов на примерах. Конструкцию

le( [relief]@1, 50, 200 )

следует читать так: всем пикселям 1го канала растра relief, значение которых меньше или равно 50, присвоить значение 200. Еще два примера

eq( [relief]@1, [mask]@4, 150 )

пиксели растра relief, значение которых равно соответствующим пикселям растра mask станут равны 150.

gt( [relief]@1, [mask]@4, [base]@2 )

пиксели растра relief, значение которых больше или равно соответствующим пикселям растра mask будут заменены соответствующими пикселями растра base.

Контакты

Если вы нашли ошибку или у вас есть предложения по улучшению расширения — воспользуйтесь багтрекером.

Ссылки по теме