Статьи

Отмывка рельефа в QGIS – покажем рельеф эстетично!

ГИС Картография Туториалы


Отмывка рельефа (также теневой рельеф, shaded relief) – это метод представления рельефа на картах естественным, эстетичным и интуитивно понятным образом, при котором кажется, что на элементы рельефа сбоку падает свет. Карты с отмывкой подчеркивают красоту рельефа и помогают показать читателям формы ландшафтов в деталях.

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

Вам понадобятся:
  • базовые знания работы с QGIS;
  • представление о проекциях и перепроектировании растров;
  • тайлы цифровой модели рельефа (ЦМР) на нужную вам территорию.

Зачем вообще делать собственную отмывку?

Для многих территорий есть готовые варианты отмывки, доступные через WMS. Готовые продукты удобны, их можно изменять, меняя яркость и контраст, но у них есть и ограничения:
  • хорошо иметь гибкость в своих проектах , потому что для каждого ландшафта есть свой идеальный азимут, позволяющий выделить нужные формы рельефа (а в готовых вариантах есть ограниченное количество углов падения света);
  • невозможно изменить значения высоты, чтобы подчеркнуть отдельные элементы рельефа;
  • иногда в готовых продуктах есть артефакты – например, линии, от которых нельзя избавиться.
Если что-то из этого вас не устраивает, можно найти тайл ЦМР на вашу территорию и создать собственную отмывку.

Что нужно знать:

1. Нам не подойдет ЦМР в проекции в градусах – сначала файлы нужно перепроецировать в метрическую проекцию.
2. В QGIS есть возможность стилизовать любую ЦМР как "Теневой рельеф" ("Hillshade"), но алгоритм GDAL в панели инструментов даст лучший результат.
3. Размер ячеек, который нужно получить в перепроецированной ЦМР, зависит от итогового масштаба карты. Например, ячейки ЦМР размером 10 м будут слишком подробными для карты масштаба 1:500 000, и файл получится огромным. Как правило, чтобы рассчитать размер ячеек, можно разделить знаменатель масштаба на 3000 для экранов или 10 000 для печати с разрешением 300 dpi. Так, если масштаб вашей карты – 1:100 000 и она будет иметь разрешение 300 dpi, подойдет ЦМР с ячейками около 10 метров.

Шаг 1. Скачиваем данные ЦМР


Продемонстрируем отмывку рельефа на примере тайла с частью Уральских гор к западу от Екатеринбурга (N56E059). Скачать данные ЦМР можно через USGS EarthExplorer или 30-Meter SRTM Elevation Data Downloader (только понадобится авторизоваться). Можно добавить к файлу код проекции “_4326”, чтобы не запутаться.
Если у вас несколько тайлов, стоит сразу соединить их через "Растр" > "Прочее" > "Merge"/"Результат", потому что при создании отмывки для каждого тайла отдельно на местах соединения тайлов будут артефакты. И если вы хотите обрезать тайл ЦМР, сейчас самое время это сделать.

Не стоит сразу применять стиль "Теневой рельеф" в свойствах слоя – получится некрасиво, так как этот стиль не предназначен для ЦМР, спроецированных в градусах:


Шаг 2. Перепроектирование и ресемплинг


Перепроецирование – это изменение проекции слоя, а ресемплинг – это изменение разрешения. Эти два процесса по сути неразделимы, поскольку при перепроецировании с проекции 4326 на, скажем, 32640, вы также захотите перейти от прямоугольных ячеек к красивым квадратным.
Первое, что нужно сделать для нашего слоя ЦМР – это нажать на "Сохранить как" и выбрать целевую проекцию, чтобы увидеть исходные размеры ячеек растра в метрах.


После указания системы координат 32609, получим разрешение около 16 x 31 м. Запомним эти значения и закроем окно.
Кстати, можно изменить проекцию и с помощью функции "Сохранить как" в QGIS, но тогда мы не можем выбрать алгоритм интерполяции, и результаты будут некрасивыми.

Например, на итоговой отмывке появляются артефакты в виде штриховки:

Вместо этого нужно перепроецировать и ресемплировать с помощью инструмента "Перепроецирование" в панели инструментов. ("Toolbox", "gdal:warpreproject").

В этом окне:
●     исходная система координат должна быть 4326;
●     целевая система координат должна быть в метрической проекции – в нашем случае 32640;
●     разрешение выходного файла может быть любым, но хорошие результаты получаются с меньшим из двух размеров ячейки растра (в нашем случае 16);
●     лучший метод интерполяции здесь – "билинейный";
●     добавим код проекции "_32640" к названию файла.

Файл в проекции 32640 в QGIS выглядит так же, как и в 4326, но в "Свойствах слоя" можно увидеть, что параметры слоя другие.
Пока что откроем свойства слоя и стилизуем его как "Теневой рельеф". Это еще не окончательный вариант, но стилизация позволит нам выбрать азимут и высоту солнца, а также Z-фактор, чтобы увидеть, какие варианты подходят для нашего ландшафта. Z-фактор – это коэффициент увеличения значений высоты, чем от выше, тем лучше будут выделяться элементы рельефа. Хорошие результаты получаются при выборе азимута 340, но подойдут разные варианты.

Шаг 3. Как добавить теневой рельеф


Теперь, если вы хотите сгладить рельеф на изображении, самое время перейти к инструменту GDAL "Hillshade" ("Теневой рельеф") в панели инструментов. Здесь остается указать выбранные на предыдущем шаге азимут, высоту солнца и Z фактор и сохранить файл.

Теперь никаких артефактов!

Шаг 4. Визуализация


Теневой рельеф GDAL обычно темнее, чем нужно в наших проектах. Значения растра находятся в диапазоне от 1 до 255, и по умолчанию отображаются как шкала от черного до белого. Но часто нам не нужны области сплошного черного цвета на карте – они могут закрывать нужную информацию.

Хорошим решением будет регулировка непрозрачности или увеличение яркости.
Прозрачность 50%:

Яркость +80, контраст -35:

Если менять яркость, контраст и тон, можно получить очень разные результаты! Можно построить цветовой градиент от 50% серого (#808080) до белого (#ffffff), а затем выбрать стиль "одноканальный псевдоцветной" с этим градиентом. Тогда ни одна часть теневого рельефа не будет темнее 50% серого. Добавим теневой рельеф к другим слоям карты, выбрав режим наложения "Умножение" в окне "Стиль" и разместив файл с отмывкой в верхней части стопки слоев.


Все готово!
Отмывка рельефа поверх слоя OpenStreetMap

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

Автор оригинала: Morgan Hite.
Материал адаптирован с сайта The Wandering Cartographer.

Полезные ресурсы:
https://wanderingcartographer.wordpress.com/2021/04/30/making-shaded-relief-directly-from-dems-projected-in-degrees/
http://shadedrelief.com/miscellaneous.html

А если вы хотите знать про карты больше и читать про них интересные статьи, подпишитесь на рассылку Картетики с лучшими материалами и полезными ссылками. Письма приходят раз в две недели, по вторникам.