Статьи

Подписи на основе правил в QGIS

ГИС Дизайн
Время прочтения: 4 минуты
Уровень владения QGIS: подойдет для новичков, которые знают основы работы со слоями и проектом
Версия QGIS на скриншотах: 3.40

Зачем нужны правила для подписей

Надписи на карте — незаменимый элемент, без которого сложно представить карту. При этом подписи передают нам не только текстовую информацию. Тип, цвет и размер шрифта может рассказать о природе объекта и о его роли в иерархии элементов карты.
Названия столиц государств часто отображаются шрифтом большего размера, чем названия других городов, что дает дополнительную информацию о значимости населенных пунктов. Это удобно делать в QGIS с помощью подписей на основе правил, когда в рамках одного слоя мы можем настроить разные стили подписей для разных объектов, чтобы больше рассказать об их значимости и роли в иерархии.
Источник изображения — https://kontikimaps.com/worldpainted (https://static.tildacdn.com/tild6439-3966-4636-a662-383463373562/image52.png)
Карта выше — пример того, как много информации могут давать шрифты. С помощью цвета можно различить города (подписаны черным цветом), элементы рельефа (подписаны коричневым) и водные объекты (подписаны синим). С помощью размера и стиля шрифта считывается информация об иерархии: размер шрифтов морей больше, чем у заливов, а у заливов больше, чем у рек.

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

Визуальная иерархия подписей на карте — это один из базовых аспектов картографического дизайна. И это не просто привычная традиция картографии, как подпись рек курсивным шрифтом. Иерархия ускоряет ориентирование на карте и поиск нужной информации, помогая игнорировать ненужные для анализа элементы.
Для большей убедительности посмотрите на пример ниже. Ради эксперимента попробуйте поочередно, используя карты, найти топонимы из списка: Iowa (штат), Sault Ste. Marie (город), Winnebago (озеро), North Bay (город). На какой карте получилось сделать это быстрее?
Источник изображения — https://www.axismaps.com/guide/labeling

Настраиваем визуальную иерархию подписей для слоя в QGIS

Чтобы попрактиковаться, для примера настроим иерархию подписей городов Бразилии, которые я взял в наборе данных Natural Earth из слоя ne_10m_populated_places. В нашем примере мы будем менять размер шрифта в зависимости от значимости города.
По такой карте Остап Бендер долго бы искал желанное Рио-де-Жанейро
Чтобы установить подписи на основе правил, нужно зайти в свойства слоя (правой клавишей мыши кликнем на слой на панели слоев и в самом низу меню ищем Свойства), после чего во вкладке “Подписи” в верхнем всплывающем меню выбираем “Подписи на основе правил”.
Два раза кликаем по первой строчке, которая создается стандартно, и видим окно, где мы можем установить первое правило. Если вдруг у вас нет первой строчки, нажмите на зеленый плюсик внизу окна.
Для начала установим шрифт для столицы страны, но перед этим в строке “Описание” подпишем, для чего мы устанавливаем правило. Убедимся, что будем подписывать значением, взятым из колонки с именем города, и после этого настроим стили. Чтобы установить правило рядом со строкой “Фильтр”, вверху нажмем на кнопку с буквой ε. Можно вписывать правила сразу в строчку, но через дополнительное меню это сделать проще.
Редактор выражений, который открывается при клике на эпсилон
В открытом редакторе выражений довольно удобно писать формулы. Например, если открыть вкладку "Поля и значения" и кликнуть на нужное нам поле, то оно сразу печатается слева без ошибок.
Давайте подробно разберем код для подписей столиц:
"FEATURECLA" = 'Admin-0 capital'
  • "FEATURECLA" — поле, в котором хранится информация о том, является ли город столицей страны (значение 'Admin-0 capital'), столицей региона/штата (значение 'Admin-1 capital' или же это просто населенный пункт (значение ‘Populated place’);
  • = 'Admin-0 capital' означает, что стиль будет работать, когда значение в поле "FEATURECLA" равно Admin-0 capital. Обратите внимание, что кавычки с названием колонки и значением колонки разные.
После того как код написан, нажимаем "ОК" и создаем еще два стиля: один для городов с населением больше 1 млн человек и один для тех, которые меньше.
Небольшой лайфхак — мы можем скопировать и вставить правило, это может сэкономить нам немного времени.
Теперь заполняем новое правило, меняем описание и настройки стиля слоя, а также пишем новый код. Обратите внимание, что для второй категории городов я уменьшил размер шрифта, чтобы показать иерархию. Но далее мы отойдем от административной иерархии в учебных целях и будем отталкиваться от численности населения.
Давайте разберем код в строке "Фильтр":
"FEATURECLA" != 'Admin-0 capital' AND "POP_MAX" >=1000000
  • "FEATURECLA" != 'Admin-0 capital' — здесь != означает не равно. Население Бразилиа больше 1 миллиона человек, и столица будет попадать под два правила, что в таких случаях может давать не тот результат, что нам нужен. Поэтому с помощью != 'Admin-0 capital' мы исключаем его из правила;
  • AND "POP_MAX" >=1000000 означает, что для выполнения правила население города в колонке "POP_MAX" должно быть более 1 миллиона человек, включая города с населением 1000000. Если работаете с числами, убедитесь, что тип поля — целое или десятичное число, иначе код работать не будет.
Для следующей категории все просто: копируем правило для городов с населением свыше 1 млн. человек, меняем описание и размер шрифта в правиле. В коде же меняем >= на <.
Установив все правила в окне "Свойства слоя", нажимаем “ОК” и наблюдаем, насколько понятнее стала карта.

Связанные статьи:

Материал подготовил Александр Зуев