Время прочтения: 6 мин.
В статье рассматриваются два ознакомительных примера работы с ГИС. Представлен также способ взаимодействия системы с языком программирования Python для более детального анализа карты и местности.
Основной текст
Сегодня QGIS (ранее известная как Quantum GIS) – это свободная геоинформационная система. Данная геосистема предназначена для создания и редактирования данных, производства карт и выполнения аналитических операций. QGIS активно поддерживается международным сообществом (Россия представлена командой NextGIS).
QGIS, позволяет совершать следующие действия:
- Просмотр данных,
- Исследование данных и компоновка карт,
- Управление данными (создание, редактирование и экспорт),
- Анализ данных,
- Экспорт карт в сети Интернет,
- Расширение функциональности QGIS с помощью модулей.
Установка QGIS.
QGIS работает в Windows и в большинстве Unix платформ (включая Mac OS), поддерживает множество векторных и растровых форматов и баз данных, а также имеет богатый набор встроенных инструментов. Для установки перейдем на сайт разработчиков (рисунок 1), нажмем на кнопку «Загрузить сейчас» и выберем установочный пакет под свою систему. Радует то, что никаких дополнительных затруднений установка не вызывает – выбираешь платформу, скачиваешь и устанавливаешь через обычный установщик.

Теперь перейдем к работе с QGIS.
На примере рассмотрим, как в QGIS выгрузить файлы зданий, улиц и парков. Для решения это задачи необходимо установить в QGIS два модуля: QuickMapServices – для получения базовой карты и QuickOSM – для выгрузки данных.
Добавление в проект базовой карты OpenStreetMap. Для этого ищем заголовок «Интернет» с выпадающим меню. В нем выбираем уже установленный модуль QuickMapServices и далее «OSM Standard». Результат вышеперечисленных манипуляций представлен на рисунке 2.

Работа с модулем QuickOSM.
На карте-подложке выбираем интересующий нас участок (например, рисунок 3). На панели выбираем и нажимаем значок «лупа» для перехода в окно запросов QuickOSM. В этом окне в поле «Ключ» из выпадающего списка берем всё, что необходимо для выгрузки. В данном случае возьмем следующие ключи: «building», «highway», «natural».

После чего выполним запрос и посмотрим какой результат был получен, предварительно отключив слой подложки в меню слева (рисунок 4).

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

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

Применение языка программирования Python в QGIS.
Рассмотрим работу со слоем и выборкой объектов по выражению на примере загруженного слоя административно-территориального деления Российской Федерации, которая имеет свою атрибутивную таблицу (рисунок 7). В таблице имеются несколько столбцов, которые заполнены как на кириллице, так и на латинице. Открыть консоль Python в QGIS можно нажав на кнопку:


Чтобы начать работу с используемым слоем в первую очередь необходимо записать его в переменную, в данном случае в переменную layer:
layer = iface.activeLayer()
и если вызвать переменную layer, то получим сообщение о слое:

Можно также посмотреть какими свойствами обладает слой:
layer.name()
с помощью этой строчки выводится имя слоя:

У объектов слоя также есть метод type, который выводит следующее сообщение:

Другие методы и свойства можно посмотреть, применив функцию dir к объекту layer. Тем самым получим список методов и свойств, которые применимы к объекту QgsVectorLayer.

Чтобы получить все объекты из таблицы атрибутов слоя можно воспользоваться функцией getFeatures, для этого создадим новую переменную:
features = layer.getFeatures()
Следующим действием пробежимся по итерируемой переменной features:
for f in features:
attrs = f.attributes()
print(attrs)
и получим вывод на экран атрибутов:

С помощью консоли Python можно также выделять все объекты слоя с помощью метода selectAll, а чтобы снять выделение — removeSelection:
layer.selectAll()
layer.removeSelection()
соответственно объекты на слое изменят свой цвет (рисунок 8-9):


Чтобы выбрать объекты по конкретному выражению внутри слоя используется метод selectByExpression, параметрами в данном методе является текстовое выражение, где в кавычках ставится имя столбца и после знака равенства значение внутри данного столбца:
layer.selectByExpression('"engtype_1" = \'Republic\'')
на слое после применения строки кода выделяются объекты республики Российской Федерации (рисунок 10):

Можно поменять цвет выборки, если это необходимо, для этого применим следующую строчку кода:
iface.mapCanvas().setSelectionColor( QColor("green") )
в результате получим:

Создадим новую переменную selected и выполним следующий код, который позволит вывести на экран все республики, которые выделены в данный момент на слое:
selected = layer.selectedFeatures()
for sF in selected:
print(sF.attributes()[6])
результатом выполнения кода будет:

В статье была рассмотрена малая часть возможностей языка программирования Python для работы с QGIS, а именно была проведена обработка и визуализация данных с использованием карты.
В заключение хочется отметить, что статья написана и предназначена для знакомства с данным видом ГИС. Если более детально изучить способы работы с программой, то её в полной мере можно применять в различных проектах, например: от анализа урожая со снимков дрона до подбора оптимального месторасположения нового офиса. Стоит также учитывать тот факт, что программа хорошо взаимодействует с Python и SQL.
QGIS обладает очень широким спектром возможностей, ознакомиться с которыми можно по следующей ссылке.