Статьи

Как сделать береговую линию на карте интересней

ГИС Туториалы
Время прочтения: 5 минут
Версия QGIS: 3.40.1

Введение

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

Зачем нужна береговая линия

Береговая линия на картах это не просто граница между континентом и морем, это граница, определяющая разные способы передвижения, да и существования в целом. Несмотря на неточность географического знания о координатах береговой линии (которая, кстати, имеет бесконечную длину), на протяжении большей части истории человечества она была одним из основных ориентиров для навигации. Более детальные карты побережий — лоции, вообще долгое время считались чем-то совершенно секретным, и капитаны судов хранили их тщательнее всего, что у них было.
Удаленностью от морского побережья в своей диаграмме Патрик Геддес определял тип планирования экономической деятельности человека (Источник - https://www.ovalpartnership.com/en/article/The-Living-City-The-Rise-and-Fall-and-Rise-Again-of-Sir-Patrick-Geddes)
Береговая линия на карте играет и художественную роль, выделяет наиболее важные элементы, помогает сделать карту более красивой, уменьшить количество пустого пространства и провести более плавный переход от географических объектов карты к легенде, либо иным текстовым блокам карты.
План Санкт-Петербурга 1799 года. Береговая линия не просто выделяет на первый план застройку города, но и заполняет пустоты карты своим разнообразием. Береговая линия тут не просто линия, а своего рода градиент, представленный как различными оттенками голубого, так и исходящими линиями, повторяющими контур берега. (Источник - https://www.davidrumsey.com/luna/servlet/detail/RUMSEY~8~1~327756~90096242)
Примеров береговых линий довольно много, и если вы встретили те, которые вам очень понравились, то обязательно поделитесь ими в комментариях в наших социальных сетях, а потом возвращайтесь, так как дальше пойдет практически ориентированная часть статьи.

Варианты отображения береговой линии

В этой статье я покажу несколько вариаций отображения береговой линии.
Если хотите быстро и просто выделить водные объекты, либо же наоборот континенты, то можно просто использовать обычный линейный слой береговой линии. Но вы ведь не за этим читаете эту статью, так что дальше интересней.

Вариант 1. Градиентная заливка из центра

Чтобы добиться такого эффекта, нам нужен полигональный слой с водными объектами. Напоминаю, что делаем мы все в QGIS.
Заходим в свойства слоя, далее идем в «Стиль» и в типе слоя выбираем «Заливка градиентом из центра». После чего ищем подзаголовок «Стиль растушевки» и выбираем пункт «На расстоянии». Дальше уже начнется ваше творчество с расстоянием стиля растушевкой и цветами градиента.

Вариант 2. Заливка из центра с дискретным градиентом

Похожий результат можно получить, используя инструмент, показанный в предыдущем варианте, но, на мой взгляд, он неудобный для таких целей. Покажу вам другой вариант, чтобы добиться похожего эффекта.
Для этого нам также нужен полигональный слой с водными объектами, но сделаем мы это другим способом: в меню заливки мы создадим три слоя (см. плюсик справа), и установим для них тип «Простая линия».
Дальше все, что мы будем делать, — это играться с цветом, толщиной обводки и отступом. У самого верхнего слоя я поставил толщину обводки 1 мм и отступ 0,5 мм. Отступ поставил, чтобы линия не накладывалась на территорию, и выбрал вариант в половину толщины обводки, так как толщина обводки линии откладывается в две стороны от оси линии. У следующего слоя взял оттенок синего посветлее, добавил прозрачности, чтобы сгладить переход, толщину оставил 1 мм, но отступ увеличил. Со следующим слоем то же самое.
Я сознательно не даю вам значения отступов слоев в стиле слоя, так как это уже устанавливается опытным путем в зависимости от типа местности и масштаба карты, чтобы избежать зазоров между слоями стиля.

Вариант 3. Экспоненциальная береговая линия

Для того, чтобы использовать этот стиль, его необходимо скачать по ссылке. Чтобы импортировать стиль в QGIS, необходимо предварительно распаковать скачанный архив. После чего на верхней панели QGIS ищем вкладку «Настройки», далее выбираем управление стилями.
В высветившемся окошке слева внизу нажимаем на «Импорт/экспорт», выбираем импорт и в появившемся окошке, справа от надписи «файл» нажимаем на три точки и выбираем файл в формате .xml, который содержался в скачанном архиве, после чего выбираем знак и нажимаем «импорт». Поздравляю, теперь в стилях QGIS вы сможете найти новый знак.
Далее нам нужен полигональный слой с водными объектами. Важно помнить: чем больше слой и больше объектов, тем дольше будет прогружаться отрисовка стиля, или вообще может не прогрузиться для всей планеты, например, если использовать слои от Natural Earth.
Заходим в свойства слоя и в поиске ищем наш стиль.
После выбора стиля, тип слоя изменится на генератор геометрии. Тут главное выбрать единицы измерения слоя (если у вас стоит единицы карты, а система координат проекта такая, что единицы в ней градусы, то линии от береговой линии вы вряд ли увидите).
В генераторе геометрии у нас следующий код:
segments_to_lines(
collect_geometries(
array_foreach(
generate_series(0,4,0.5), -- Adjust values for intervall
with_variable('distance', 10 * exp(@element)-10,
buffer(
$geometry,
-@distance
)))))
Нас больше всего интересует строчки “generate_series(0,4,0.5)” и “with_variable('distance', 10 * exp(@element)-10,”
“with_variable('distance', 10 * exp(@element)-10,”
“generate_series(0,4,0.5)” означает следующее для нас: создаем серию буферов линий размером от 0 до 4 с интервалом 0.5.
Вторая же строчка добавляет как раз экспонентность наших буферов, ведь чем ближе они к побережью, тем чаще. Серии значений, которые мы сделали, дополнительно умножаются и возводятся в степень, тут тоже можно поиграться со значениями.
Саму формулу можно перевести так: дистанция буфера равна 10*2.71828 (в степени значения из серий в предыдущей строчке кода) - 10.
Обратите внимание, что заливка слоя пропадет и останутся только линии. Чтобы добавить цветовую заливку, добавьте в стиле знака дополнительный слой простой заливки и положите его под наши линии.
Зная эти варианты отображения береговой линии, вы сможете разнообразить свою карту. Более того, можно играться со стилями и создать свой вариант береговой линии, использовать пунктиры или комбинировать их с градиентами, тут уже ваш простор для творчества.
Материал подготовил Александр Зуев