Hexagon layer

Hexagon layer — слой пространственной агрегации, основанный на разбиении поверхности карты на шестиугольную сетку и подсчёте количества точек или суммарных значений внутри каждого гексагона. В экосистеме Kepler.gl он используется для визуализации плотности распределения больших наборов геоданных и является одним из ключевых инструментов анализа кластеризации событий в пространстве.

Hexagon layer строится на основе регулярной гексагональной сетки, покрывающей карту. Каждый объект данных (точка с координатами longitude/latitude) попадает в один из шестиугольных ячеек. После распределения выполняется агрегация значений внутри каждой ячейки.

Основные операции:

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

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

Математическая модель разбиения

Гексагональная сетка формируется с использованием параметра радиуса (radius), который определяет размер каждой ячейки. Пространство делится на регулярную решётку, где каждая точка преобразуется в координаты гексагона.

Базовая идея агрегации выражается через функцию:

H_i = _{p G_i} w_p

где:

  • (H_i) — агрегированное значение для i-го гексагона
  • (G_i) — множество точек, попавших в гексагон
  • (w_p) — вес точки (например, 1 или числовое значение поля данных)

Таким образом слой превращает набор дискретных точек в поле плотности.

Архитектура слоя в deck.gl

Hexagon layer в Kepler.gl основан на реализации HexagonLayer из deck.gl. Он работает на GPU-ускоренной обработке и использует WebGL для рендеринга.

Основные этапы pipeline:

  1. загрузка и нормализация данных
  2. биннинг точек в гексагоны
  3. агрегация значений в каждом бине
  4. вычисление визуальных атрибутов (высота, цвет)
  5. рендеринг 3D-экструзии

Ключевые параметры конфигурации

Hexagon layer обладает набором параметров, определяющих поведение агрегации и визуализации.

radius

Определяет размер гексагона в метрах.

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

elevationScale

Масштабирует высоту столбцов, соответствующих значениям агрегации. Используется для 3D-визуализации плотности.

coverage

Определяет долю заполнения гексагона по площади. Влияет на визуальную «плотность» слоя.

upperPercentile и lowerPercentile

Используются для отсечения выбросов. Значения выше или ниже заданных перцентилей могут игнорироваться или нормализоваться.

colorRange

Диапазон цветов, применяемых к значениям агрегации. Обычно используется градиент от холодных к тёплым цветам для отображения плотности.

Типы агрегации данных

Hexagon layer поддерживает различные функции агрегации:

  • count — количество точек в ячейке
  • sum — сумма значений выбранного поля
  • mean — среднее значение
  • min / max — экстремальные значения

Выбор агрегации влияет на смысл визуализации: от простого отображения плотности до аналитики распределения параметров.

Пример конфигурации слоя

const hexLayer = {
  id: 'hex-layer',
  type: 'hexagon',
  data: dataset,
  radius: 1000,
  elevationScale: 50,
  colorRange: [
    [25, 150, 65],
    [127, 211, 63],
    [217, 239, 139],
    [254, 224, 139],
    [252, 141, 89],
    [215, 48, 39]
  ],
  coverage: 0.8,
  upperPercentile: 100,
  lowerPercentile: 0,
  getPosition: d => d.coordinates,
  getColorWeight: d => d.value,
  getElevationWeight: d => d.value,
  aggregation: 'SUM'
};

Поведение при изменении масштаба карты

Одной из ключевых особенностей hexagon-слоя является адаптивность к zoom level. При увеличении масштаба:

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

При уменьшении масштаба:

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

Это обеспечивает многомасштабный анализ данных без необходимости переключения слоёв.

Отличия от grid и heatmap слоёв

Hexagon layer занимает промежуточное положение между heatmap и grid-based визуализациями.

  • heatmap: непрерывное сглаженное поле без дискретных границ
  • grid: квадратная дискретизация пространства
  • hexagon: гексагональная дискретизация с более равномерной топологией

Преимущество гексагонов проявляется в более естественном восприятии плотности и меньшей направленной искажённости.

Производительность и оптимизация

При работе с большими наборами данных hexagon layer использует оптимизации:

  • GPU-агрегация через WebGL шейдеры
  • предварительное биннинг-разбиение
  • кэширование вычисленных ячеек
  • инкрементальное обновление при панорамировании

Основным фактором производительности является количество точек и радиус гексагона: уменьшение радиуса увеличивает число ячеек и вычислительную нагрузку.

Визуальная интерпретация

Hexagon layer интерпретирует данные через два визуальных канала:

  • цвет — интенсивность или значение агрегации
  • высота — количественное значение (в 3D режиме)

Такое сочетание позволяет одновременно анализировать плотность и величину показателей, что особенно важно для задач:

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

Связь с deck.gl HexagonLayer

Реализация слоя в Kepler.gl напрямую использует концепцию HexagonLayer из deck.gl. Это означает:

  • унифицированную систему атрибутов
  • совместимость с другими слоями deck.gl
  • использование WebGL2 там, где доступно
  • декларативную модель описания слоя

Поведение при больших объёмах данных

При обработке миллионов точек hexagon layer переходит к стратегии:

  • частичной агрегации на клиенте
  • WebGL вычислениям
  • ограничению точности координат
  • динамическому снижению детализации

Это позволяет сохранять интерактивность даже при высокой нагрузке.

Использование в аналитических сценариях

Hexagon layer применяется для выявления пространственных паттернов:

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

Гексагональная структура делает возможным сравнение регионов без привязки к административным границам.

Связь с системой координат

Слой работает в географической системе координат WGS84, но при рендеринге данные проецируются в экранные координаты через Web Mercator projection. Это обеспечивает совместимость с большинством картографических тайловых систем.


Hexagon layer формирует основу плотностной визуализации в геопространственном анализе, соединяя дискретную агрегацию с непрерывным восприятием распределений и обеспечивая масштабируемую обработку больших массивов координатных данных.