Raster DEM источник

Назначение и роль в системе рендеринга рельефа

Raster DEM (Digital Elevation Model) источник используется для представления высотной информации в виде растровых тайлов, где каждый пиксель кодирует значение высоты. В MapLibre GL JS этот тип источника является основой для построения трёхмерного рельефа, наклонов (terrain) и освещения поверхности.

В отличие от векторных источников, raster DEM не содержит геометрии объектов. Его задача — предоставление непрерывного поля высот, которое интерпретируется движком рендеринга как поверхность с Z-координатой.

Ключевые сценарии использования:

  • построение 3D-рельефа карты (terrain)
  • визуализация склонов и перепадов высот
  • генерация теней и освещённости (hillshade)
  • комбинирование с векторными слоями для реалистичной подложки

Формат данных Raster DEM

Raster DEM тайлы представляют собой растровые изображения, где высота кодируется в цветовых каналах. Основные форматы кодирования:

Mapbox Terrain-RGB

  • RGB каналы кодируют высоту
  • формула декодирования: [ height = -10000 + (R ^2 + G + B) ]
  • поддерживает высокую точность
  • широко используется в глобальных наборах данных

Terrarium формат

  • используется канал RGB
  • формула: [ height = (R + G + B / 256) - 32768]
  • популярен в открытых источниках данных

Ключевая особенность Raster DEM — отсутствие визуального представления как изображения. Данные интерпретируются исключительно как числовые значения высот.


Подключение 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-RGB
  • terrarium — Terrarium encoding

Использование DEM для рельефа (Terrain)

После подключения 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.


Hillshade как производный слой DEM

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 вычисляет освещённость поверхности на основе угла падения виртуального света, создавая эффект теней.


Источники данных DEM и их особенности

При работе с raster DEM критически важно учитывать характеристики источника данных:

Глобальные наборы

  • обеспечивают непрерывное покрытие
  • могут иметь ограниченную детализацию

Локальные высокодетализированные DEM

  • высокая точность рельефа
  • большой объём данных
  • используются в городском моделировании и инженерных задачах

Компромиссы качества

  • размер тайлов влияет на скорость загрузки
  • степень сжатия влияет на точность высот
  • масштабирование z-уровней влияет на плавность рельефа

Производительность и особенности рендеринга

Raster DEM обрабатывается на этапе подготовки terrain mesh, где растровые данные преобразуются в треугольную сетку.

Факторы, влияющие на производительность:

  • плотность тайлов (z-уровни)
  • размер загружаемой области
  • наличие terrain exaggeration
  • количество одновременно активных источников

Оптимизация достигается через:

  • ограничение максимального zoom DEM источника
  • использование кеширования тайлов
  • балансировку между детализацией и покрытием

Сочетание с освещением и атмосферными эффектами

Raster DEM является базой для продвинутых визуальных эффектов:

  • наклонное освещение terrain
  • туман и атмосферная перспектива
  • динамическое затенение склонов

Пример настройки освещения:

map.setLight({
    anchor: 'viewport',
    color: '#ffffff',
    intensity: 0.6
});

Комбинация light + terrain создаёт объёмное восприятие карты, где высота влияет на распределение света и теней.


Ограничения Raster DEM подхода

Несмотря на широкие возможности, raster DEM имеет ряд ограничений:

  • отсутствие семантической информации о поверхности
  • фиксированная точность на уровне тайлов
  • зависимость от качества исходного набора высот
  • невозможность динамической генерации геометрии вне terrain pipeline

Эти ограничения компенсируются использованием гибридных подходов, где raster DEM сочетается с векторными моделями и дополнительными источниками высотных данных.