Время прочтения: 6 мин.

В статье рассматриваются два ознакомительных примера работы с ГИС. Представлен также способ взаимодействия системы с языком программирования Python для более детального анализа карты и местности.

Основной текст

Сегодня QGIS (ранее известная как Quantum GIS) – это свободная геоинформационная система. Данная геосистема предназначена для создания и редактирования данных, производства карт и выполнения аналитических операций. QGIS активно поддерживается международным сообществом (Россия представлена командой NextGIS).

QGIS, позволяет совершать следующие действия:

  • Просмотр данных,
  • Исследование данных и компоновка карт,
  • Управление данными (создание, редактирование и экспорт),
  • Анализ данных,
  • Экспорт карт в сети Интернет,
  • Расширение функциональности QGIS с помощью модулей.

Установка QGIS.

QGIS работает в Windows и в большинстве Unix платформ (включая Mac OS), поддерживает множество векторных и растровых форматов и баз данных, а также имеет богатый набор встроенных инструментов. Для установки перейдем на сайт разработчиков (рисунок 1), нажмем на кнопку «Загрузить сейчас» и выберем установочный пакет под свою систему. Радует то, что никаких дополнительных затруднений установка не вызывает – выбираешь платформу, скачиваешь и устанавливаешь через обычный установщик.

Рисунок 1 – Стартовая страница на сайте разработчиков QGIS

Теперь перейдем к работе с QGIS.

На примере рассмотрим, как в QGIS выгрузить файлы зданий, улиц и парков. Для решения это задачи необходимо установить в QGIS два модуля: QuickMapServices – для получения базовой карты и QuickOSM – для выгрузки данных.

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

Рисунок 2 – Базовая карта (подложка) из OpenMapServices

Работа с модулем QuickOSM.

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

Рисунок 3 – Выбранный участок карты

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

Рисунок 4 – Результат запросов по ключу

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

Рисунок 5 – Сохранение временного слоя

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

Рисунок 6 – Таблица атрибутов слоя building

Применение языка программирования Python в QGIS.

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

Рисунок 7 – Таблица атрибутов слоя gadm36_RUS_1

Чтобы начать работу с используемым слоем в первую очередь необходимо записать его в переменную, в данном случае в переменную 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):

Рисунок 8 – Слой gadm36_RUS_1до выделения
Рисунок 9 – Слой gadm36_RUS_1после выделения

Чтобы выбрать объекты по конкретному выражению внутри слоя используется метод selectByExpression, параметрами в данном методе является текстовое выражение, где в кавычках ставится имя столбца и после знака равенства значение внутри данного столбца:

layer.selectByExpression('"engtype_1" = \'Republic\'')

на слое после применения строки кода выделяются объекты республики Российской Федерации (рисунок 10):

Рисунок 10 – Выделение республик Российской Федерации

Можно поменять цвет выборки, если это необходимо, для этого применим следующую строчку кода:

iface.mapCanvas().setSelectionColor( QColor("green") )

в результате получим:

Рисунок 11 – Изменение цвета выделения

Создадим новую переменную selected и выполним следующий код, который позволит вывести на экран все республики, которые выделены в данный момент на слое:

selected = layer.selectedFeatures()
for sF in selected:
    		print(sF.attributes()[6])

результатом выполнения кода будет:

В статье была рассмотрена малая часть возможностей языка программирования Python для работы с QGIS, а именно была проведена обработка и визуализация данных с использованием карты.

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

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