Статьи

Генерализация в QGIS

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

Отбор

Отбор — в первую очередь, фильтрация данных, которые мы отображаем и которую можно применить ко всем типам слоев: линиям, точкам и полигонам. Делать отбор можно радикально, удалив все ненужные объекты слоя, либо можно настроить правила отображения объектов так, чтобы отображались только нужные. Сейчас я покажу по одному способу, как можно сделать и то, и другое.
Удалить ненужные объекты можно, выделив их с помощью инструментов выделения на карте и нажав клавишу «Del». Это довольно долгий и не самый эффективный способ, поэтому, если у вас есть данные с атрибутами и вы хотите удалить ненужные объекты по их свойствам, поможет инструмент «Выбрать объекты по значению» (горячая клавиша F3)
Найти инструмент можно на главной панели QGIS. Сначала на панели слоев выберите слой, в котором вы хотите выделить объекты, а потом нажмите на значок нужного нам инструмента. С помощью него вы сможете, например, выделять здания, которые выше трех этажей (в примере на скрине у слоя есть поле «r_floors», в котором содержится информация об этажности зданий), либо о которых имеется информация об архитекторе (в примере на скрине есть поле «r_architect», в котором записано имя архитектора). Также можно выделять значения, которые содержат определенные буквосочетания.
Выделив нужные значения, можете удалить ненужные объекты, но обязательно проверяйте, как сработало ваше выделение, и на всякий случай делайте копии слоев, чтобы не удалить ничего лишнего.
Важно! Не забывайте, что от типа поля в таблице атрибутов слоя зависит то, как вы можете фильтровать данные. Если тип слоя текстовый (string), но в нем написаны числовые значения, то операцию по выделению значений больше определенного числа вы провести не сможете.
Чтобы не удалять объекты, а отобразить только нужные, вам потребуется использовать «Стиль слоя». Его можно найти, щелкнув правой клавишей мыши на слой и выбрав «Свойства слоя», там вы найдете «Стиль слоя». Можно быстро установить отображение объектов с помощью символизации по диапазонам или уникальным значениям, потом покопаться с видом отображения и убрать галочку с тех значений, которые вы не хотите отображать. Если же у вас несколько условий для отображения объекта, то лучше использовать стилизацию слоя через настройку «Стилизация на основе правил».
Отбор значений, выделение, фильтр и настройку отображения можно делать и более эффективными способами, например, с помощью калькулятора значений или генератора геометрий. О том, как их использовать, а также совершать манипуляции с геоданными, вы можете подробнее узнать на курсах «Введение в QGIS» и «Продвинутый QGIS».

Упрощение и сглаживание

Упростить геометрию полигонов и линий в QGIS можно с помощью инструмента «Упростить» («Simplify»), который скрывается на панели «Инструменты анализа».
Он предлагает нам на выбор три алгоритма:
  • алгоритм Дугласа-Пекера удаляет точки таким образом, чтобы расстояние между соседними точками было больше заданного инструментом порогом (устанавливается настройкой «допуск»);
  • алгоритм «Прилипать к сетке» округляет значения до определенного значения координат, но делает это очень странно. На практике похож на то, что делает алгоритм Дугласа-Пекера, но при работе с полигонами стремится к превращению их в прямоугольники при увеличении «допуска»;
  • алгоритм площадной Висвалингама удаляет точки так, чтобы площади треугольников между соседними точками не были больше значения «допуска».
Если у вас нет панели «Инструменты анализа» справа, то ее можно включить выбрав на самой верхней панели вкладку «Анализ», а затем нажав на «Панель инструментов», либо просто использовав сочетание клавиш «Ctrl + Alt + T».
Окно инструмента «Упростить»
Сравнение работы алгоритма на плавной кривой при одинаковом значении «допуска»
Для сглаживания используется инструмент «Сглаживание» (Smoothing), который можно найти на панели «Инструменты анализа». Он позволяет превратить остроугольную геометрию в плавные линии. Чем больше значение в поле «Итераций» в инструменте, тем более сглаженная будет геометрия, но тем дольше будут вычисления. «Смещение» означает, насколько сглаженная геометрия отличается от исходной: если значение 0,5, то значит различия могут быть до 50 %, если 0,25, то различия могут составлять 25 %.

Смещение

Смещение — это вид генерализации скорее косметического характера. Самый простой способ сделать смещение — воспользоваться инструментом «Переместить объект», который прекрасно работает, когда объектов немного, что бывает в большинстве случаев. Используется для слоев всех типов геометрий: точки, линии, полигоны.
Если у вас нет значка инструмента «Переместить объект», то на панели инструментов выберите «Вид» — «Панели инструментов» и поставьте галочку напротив «Дополнительные инструменты оцифровки».

Детализация

Детализация изображения — процесс, основанный на актуальных данных, например, космических снимков. Самый простой способ детализировать слой — использовать инструменты оцифровки, но часто они могут занимать огромное количество времени. Более массовые и сложные пути — углубиться в пучины машинного обучения и дешифровки спутниковых снимков, что никак не уместится в объем данной статьи.
Ускорить оцифровку объектов поможет настройка «Оцифровка в потоковом режиме», тогда, линии будут рисоваться там, где вы проведете мышкой без каких либо нажатий. Такой инструмент работает как для линейных, так и для полигональных слоев.

Объединение и преобразование

Объединение — очень разнообразная задача в QGIS, у которой не так много простых решений и простых инструментов. Можно ее решать вручную инструментами оцифровки, а можно более элегантно с помощью генератора геометрии, скриптов на питоне или иными способами, комбинирующими различные инструменты.
Можно объединять полигоны между собой вручную с помощью инструмента «Слияние объектов», он находится все на той же панели дополнительных инструментов оцифровки и работает только для линейных и полигональных слоев.
Если же вам нужно объединить множество объектов в зависимости от какого-то значения атрибута, например, объединить все полигоны административных районов в полигоны областей по соответствующей колонке, то можно воспользоваться инструментом «Слияние по признаку» (Dissolve):
Источник изображения — https://desktop.arcgis.com/ru/arcmap/latest/tools/coverage-toolbox/dissolve.htm
Если же вам нужно преобразовать информацию из полигонов в точки, то для этого в QGIS есть два отличных инструмента: «Центроиды» и «Полюс недоступности». Найти их можно на панели «Инструменты анализа», которая расположена в правой части экрана.
Красная точка — центроид Хорватии, который расположен за границами страны, синяя — полюс недоступности — точка, которая расположена внутри полигона, но дальше всего от ее границ.

Вместо заключения

В этой статье я кратко рассказал о самых простых инструментах генерализации, которые вы можете применить на практике в QGIS. Несмотря на свою простоту, они помогут начинающему картографу. Будучи не самыми элегантными или неэффективными в некоторых случаях, они помогут выполнить свои задачи и набраться опыта перед тем, как идти к более сложным в использовании, но более эффективным инструментам генерализации, используя калькулятор значений, генератор геометрии или языки программирования.
Материал подготовил Александр Зуев