Raster DEM (Digital Elevation Model) источник используется для представления высотной информации в виде растровых тайлов, где каждый пиксель кодирует значение высоты. В MapLibre GL JS этот тип источника является основой для построения трёхмерного рельефа, наклонов (terrain) и освещения поверхности.
В отличие от векторных источников, raster DEM не содержит геометрии объектов. Его задача — предоставление непрерывного поля высот, которое интерпретируется движком рендеринга как поверхность с Z-координатой.
Ключевые сценарии использования:
Raster DEM тайлы представляют собой растровые изображения, где высота кодируется в цветовых каналах. Основные форматы кодирования:
Mapbox Terrain-RGB
Terrarium формат
Ключевая особенность Raster DEM — отсутствие визуального представления как изображения. Данные интерпретируются исключительно как числовые значения высот.
В MapLibre GL JS raster DEM задаётся через тип источника
raster-dem.
map.addSource('dem', {
type: 'raster-dem',
url: 'https://example.com/tiles/{z}/{x}/{y}.png',
tileSize: 256,
encoding: 'mapbox'
});
Основные параметры:
type: 'raster-dem' — определяет тип источникаurl — шаблон тайловtileSize — размер тайла (обычно 256 или 512)encoding — схема кодирования высотыПоддерживаемые значения encoding:
mapbox — Terrain-RGBterrarium — Terrarium encodingПосле подключения DEM источника он может быть использован для формирования 3D поверхности карты.
map.setTerrain({
source: 'dem',
exaggeration: 1.5
});
Параметры:
source — идентификатор raster-dem источникаexaggeration — коэффициент вертикального
преувеличенияЗначение exaggeration управляет визуальной
выразительностью рельефа:
1.0 — реальные пропорции высот< 1.0 — сглаженный рельеф> 1.0 — усиленный рельефRaster DEM напрямую не отображается как слой, но влияет на геометрию всех векторных слоёв карты.
Пример добавления векторного слоя поверх рельефа:
map.addLayer({
id: 'roads',
type: 'line',
source: 'vector-source',
'source-layer': 'transportation',
paint: {
'line-color': '#ffcc00',
'line-width': 2
}
});
В этом случае линии дорог автоматически адаптируются к поверхности terrain.
Raster DEM часто используется вместе с hillshade-слоем для улучшения визуального восприятия рельефа.
map.addSource('hillshade-dem', {
type: 'raster-dem',
url: 'https://example.com/dem/{z}/{x}/{y}.png',
tileSize: 256,
encoding: 'terrarium'
});
map.addLayer({
id: 'hillshade',
type: 'hillshade',
source: 'hillshade-dem',
paint: {
'hillshade-exaggeration': 0.5
}
});
Hillshade вычисляет освещённость поверхности на основе угла падения виртуального света, создавая эффект теней.
При работе с raster DEM критически важно учитывать характеристики источника данных:
Глобальные наборы
Локальные высокодетализированные DEM
Компромиссы качества
Raster DEM обрабатывается на этапе подготовки terrain mesh, где растровые данные преобразуются в треугольную сетку.
Факторы, влияющие на производительность:
terrain exaggerationОптимизация достигается через:
Raster DEM является базой для продвинутых визуальных эффектов:
Пример настройки освещения:
map.setLight({
anchor: 'viewport',
color: '#ffffff',
intensity: 0.6
});
Комбинация light + terrain создаёт объёмное восприятие карты, где высота влияет на распределение света и теней.
Несмотря на широкие возможности, raster DEM имеет ряд ограничений:
Эти ограничения компенсируются использованием гибридных подходов, где raster DEM сочетается с векторными моделями и дополнительными источниками высотных данных.