Hillshade слой представляет собой визуализацию рельефа, основанную на анализе цифровой модели высот (DEM). Его задача — имитация освещения поверхности земного рельефа источником света под заданным углом, что позволяет подчеркнуть формы местности: хребты, впадины, склоны и плато.
В основе алгоритма лежит вычисление производных высот по осям X и Y, после чего определяется угол наклона и экспозиция поверхности относительно виртуального источника света. Итоговое значение преобразуется в интенсивность пикселя, формируя эффект теней и подсветки.
Hillshade слой не работает изолированно и всегда опирается на источник данных типа raster-dem. На практике используются следующие форматы:
Источник объявляется как raster-dem и затем подключается к стилю карты.
Перед добавлением hillshade слоя необходимо определить источник высот:
map.addSource('terrain-dem', {
type: 'raster-dem',
url: 'https://example.com/tiles/terrain-rgb.json',
tileSize: 256,
encoding: 'mapbox'
});
Ключевые параметры:
После подключения DEM можно создать визуальный слой рельефа:
map.addLayer({
id: 'hillshade-layer',
type: 'hillshade',
source: 'terrain-dem',
layout: {
visibility: 'visible'
},
paint: {
'hillshade-shadow-color': '#000000',
'hillshade-highlight-color': '#ffffff',
'hillshade-accent-color': '#4682b4',
'hillshade-exaggeration': 0.5
}
});
Определяет цвет теневых областей, то есть участков, не освещённых виртуальным источником света. Обычно используется тёмно-серый или чёрный оттенок.
Задает цвет освещённых участков поверхности. Влияет на визуальную «яркость» склонов, обращённых к источнику света.
Используется для усиления переходных зон между светом и тенью, формируя более выразительный рельеф.
genui{“math_block_widget_always_prefetch_v2”:{“content”:“y = kx”}}
Коэффициент усиления рельефа. Значение масштабирует высотные различия, делая рельеф более выраженным или сглаженным. При значениях больше 1 рельеф становится гипертрофированным, при значениях ниже 1 — визуально сглаживается.
Hillshade моделирует освещение через два ключевых параметра: азимут и высоту источника света.
Эти параметры влияют на расположение теней и общее восприятие рельефа. Например, низкий угол освещения усиливает тени и делает рельеф более драматичным, тогда как высокий угол уменьшает контраст.
Каждый пиксель DEM интерпретируется как точка в трёхмерном пространстве. Для неё вычисляются:
Результатом является интенсивность освещения, нормированная в диапазон от 0 до 1.
Hillshade слой чувствителен к уровню зума:
MapLibre автоматически интерполирует данные DEM между уровнями тайлов, обеспечивая непрерывность визуализации.
Hillshade часто используется совместно с 3D terrain:
map.setTerrain({
source: 'terrain-dem',
exaggeration: 1.2
});
В этом случае hillshade перестает быть просто 2D эффектом и начинает взаимодействовать с реальной геометрией карты, усиливая ощущение глубины.
Hillshade слой относится к GPU-интенсивным операциям, однако оптимизация достигается за счёт:
При высоких нагрузках рекомендуется:
Hillshade слой может комбинироваться с другими слоями через прозрачность и порядок отрисовки:
Корректное позиционирование слоя влияет на читаемость карты, особенно при сложных стилях визуализации.
Параметры hillshade поддерживают динамическое изменение через выражения:
Это позволяет создавать адаптивные карты, где рельеф подстраивается под контекст отображения.
Часто встречаются следующие проблемы:
Каждая из этих ошибок приводит либо к отсутствию рельефа, либо к искажённому отображению поверхности.
Hillshade слой используется как базовый инструмент придания глубины плоским картам. Он не изменяет геометрию объектов, но формирует восприятие рельефа через светотеневую модель, что делает карту более информативной при анализе местности, маршрутов и природных объектов.