Статьи

Автоматизируем QGIS с помощью геомоделей

ГИС Туториалы
Время прочтения: 5 минут
Задумывались ли вы когда-нибудь о том, чтобы автоматизировать свои геопроцессы, когда монотонно повторяете одни и те же действия в QGIS?
Начать строить буфер, подождать, пока он построится, потом обрезать растр по буферу, еще подождать, потом что-то посчитать, после чего посчитать новый параметр на основе рассчитанного. Читая это, у нас уже возникает усталость, а рутинные периодические задачи могут включать десятки процессов, и как было бы приятно не чередовать нажимание кнопок и ожидание, а просто нажать одну кнопку и, пока происходит расчет, потратить сэкономленное время на чашечку кофе с вкуснейшим вишневым пирогом.
И сегодня мы поговорим о том, как это можно осуществить с помощью редактора моделей the model designer, который позволит объединить несколько процессов, где нужны различные модули и функции, в один условный супер-модуль, который и называется моделью или геомоделью, причем все это без программирования!

Что такое геомодель и из чего она состоит

Используя геоинформационные системы, мы выполняем различные операции: буферизируем области, обрезаем по маске, вычисляем различные параметры. Операции, которые мы проводим, часто не единичны, а являются частью цепи действий, которые ведут нас к какой-то конечной цели. Модель, или, как ее иногда называют в ГИС-среде, геомодель (можно использовать понятия как синонимы, что я и буду делать в этой статье), как раз и является цепью операций, которые упакованы в одну большую, активируемую одной кнопкой операцию, и выглядеть и активироваться она будет как плагин в QGIS.
С принципами построения геомоделей разберемся на примере модели, рассчитывающей плотность застройки на основе двух слоев: слоя со зданиями и слоя кварталов.

Что нужно для создания модели

Для того, чтобы создавать геомодели в QGIS, мы будем использовать модуль "The model designer" или "редактор моделей". Найти его можно во вкладке "Анализ данных" ("Processing").
Если вдруг от нетерпения вы уже открыли редактор моделей, то видите много вкладочек и панелей, которые мы обсудим последовательно чуть позже в данной статье, предварительно рассказав об основных ключевых понятиях, которые необходимо знать перед тем, как создавать геомодели.
Любая модель состоит из трех основных условий, без которых она не может существовать: вход (input), алгоритмы (algorithms) и выход (output).
Вход (input) — это те данные, которые мы подаем в модель изначально. Они нужны для того, чтобы алгоритмы модели сработали. Например, если мы хотим посчитать площадь, периметр и отношение между периметром и площадью каких-либо территорий, то обязательным входом (input) будет слой с этими территориями, потому что без него непонятно, площадь чего мы вообще будем считать.
Алгоритмы (algorithms) — это функции и операции, которые мы выполняем. Ими могут быть построение буферов, разность, обрезка по маске или какие-либо вычисления, которые делаются через калькулятор полей. Алгоритмов может быть много, главное, чтобы данные, которые вы подаете на входе (input) позволяли их выполнить.
Под выходом (output) подразумевается либо результат работы модели, либо результат работы отдельного алгоритма. Ими могут быть дополнительные колонки в таблице атрибутов слоя, растровый слой с новыми параметрами или любой новый слой или группа слоев.

Как создать геомодель

Я покажу, как делать геомодели на примере модели, которая будет считать плотность застройки в квартале. Изначально, никакие значения у меня не посчитаны. Алгоритм работы модели будет таков: мы считаем площади зданий, потом считаем сумму площадей всех зданий, которые пересекают квартал, после чего в нашем слое кварталов мы посчитаем плотность застройки квартала (площадь всех зданий в квартале разделить на площадь квартала) и выведем его в отдельную колонку.
Чтобы создать геомодель, ищем на верхней панели QGIS "Анализ данных" и выбираем в раскрывающемся меню "Редактор моделей" (можно также воспользоваться комбинацией клавиш Ctrl + Alt + G). Откроется редактор моделей, где мы будем создавать наш, можно сказать, плагин.
В первую очередь в левом нижнем углу ищем панель свойства панели, и в строке "Имя" пишем имя нашей модели, после чего перейдем к заполнению наших входов (input), которые в QGIS называются "Данные".
Выбирать наши "данные"(входы, они же input) мы будем на большой вертикальной панели слева, выбрав вкладку с названием, вы не поверите, "данные". Выбираем плюсик с названием "Векторный слой", после чего во всплывающем окне указываем, как будет называться этот слой в нашей модели.
Создав все наши "входы", в моем случае это слой зданий и слой кварталов, можно идти дальше. При желании на вход могут подаваться не только векторные слои, но и растровые, а также колонка в таблице атрибутов и множество других вариантов.
Теперь перейдем к созданию алгоритмов — процессов, которые происходят внутри модели — и первый на очереди у нас подсчет площади зданий. В первую очередь на большой левой панели внизу переключимся на вкладку "Алгоритмы". Площадь зданий мы рассчитываем с использованием калькулятора полей, и его мы ищем в нашем редакторе моделей во вкладке "Алгоритмы".
Выбрав нужный нам алгоритм, выбираем исходный слой со входа модели — наш слой зданий — после чего задаем то, как будет он называться, тип поля и его размерность, а также выражение, которое будет рассчитывать нашу площадь. Площадь объектов в QGIS можно посчитать через команду $area
Сделав это действие, мы увидим, что в нашей модели появились первые связи. Не будем останавливаться и добавим следующий алгоритм, “Объединение атрибутов по расположению (сводка)”, с помощью которого мы посчитаем суммы площадей всех зданий для каждого квартала. Как видите, все функции и операции, которые есть в QGIS, есть во вкладке "Алгоритмы".
Заполняем новый алгоритм, и обратите внимание, что тут мы берем не только слои с входа, но и результат работы нашего первого алгоритма по расчету площадей зданий.
Теперь, когда мы рассчитали площади всех зданий в каждом квартале, движемся к финалу расчета алгоритма: расчету плотности застройки и выводу слоя, который и будет результатом работы алгоритма. Опять выбираем калькулятор полей в алгоритмах.
Заполняем по принципу, указанному до этого, и не забудем внизу во вкладке "вычисление" указать имя слоя, который получится на выходе, иначе результат работы модели не будет выдаваться. Возможно вы спросите, откуда колонка "Area_sum" — ответ прост, когда работает алгоритм объединения атрибутов на сумму, то к названию поля он автоматически добавляет “_sum”, и так как я называл поле с площадью зданий “Area”, то я знаю, что в результате работы алгоритма объединения в программе будет фигурировать поле “Area_sum”.
В результате у нас получилась рабочая модель со всеми составляющими. Сохраните вашу модель, после чего можете ее протестировать, нажав на зеленый треугольник справа на верхней горизонтальной панели редактора моделей.
Вот так выглядит готовая модель, у которой есть данные на входе, алгоритмы и данные на выходе.
При нажатии на выполнение модели она выглядит как плагин в QGIS.
А вот доказательство, что модель работает: временный слой “Dens” с рассчитанной плотностью.
Сохранив модель, ее можно открывать на любом компьютере, главное — скинуть файл модели. Открыть ее можно через редактор моделей, выбрав вкладку “Открыть модель”, которая скрыта под кнопкой “Модель” на верхней горизонтальной панели в редакторе моделей.
Больше о редакторе моделей вы можете узнать, например, здесь. Делитесь в наших соцсетях, помогла ли вам данная статья, какие модели вы смогли сделать и на что тратите освободившееся время. До скорых встреч!
Материал подготовил Александр Зуев