Hexagon layer — слой пространственной агрегации, основанный на разбиении поверхности карты на шестиугольную сетку и подсчёте количества точек или суммарных значений внутри каждого гексагона. В экосистеме Kepler.gl он используется для визуализации плотности распределения больших наборов геоданных и является одним из ключевых инструментов анализа кластеризации событий в пространстве.
Hexagon layer строится на основе регулярной гексагональной сетки, покрывающей карту. Каждый объект данных (точка с координатами longitude/latitude) попадает в один из шестиугольных ячеек. После распределения выполняется агрегация значений внутри каждой ячейки.
Основные операции:
Гексагональная сетка предпочтительнее квадратной, поскольку обеспечивает более равномерное расстояние до центров соседних ячеек и уменьшает визуальные артефакты направленности.
Гексагональная сетка формируется с использованием параметра радиуса (radius), который определяет размер каждой ячейки. Пространство делится на регулярную решётку, где каждая точка преобразуется в координаты гексагона.
Базовая идея агрегации выражается через функцию:
H_i = _{p G_i} w_p
где:
Таким образом слой превращает набор дискретных точек в поле плотности.
Hexagon layer в Kepler.gl основан на реализации
HexagonLayer из deck.gl. Он работает на GPU-ускоренной
обработке и использует WebGL для рендеринга.
Основные этапы pipeline:
Hexagon layer обладает набором параметров, определяющих поведение агрегации и визуализации.
Определяет размер гексагона в метрах.
Масштабирует высоту столбцов, соответствующих значениям агрегации. Используется для 3D-визуализации плотности.
Определяет долю заполнения гексагона по площади. Влияет на визуальную «плотность» слоя.
Используются для отсечения выбросов. Значения выше или ниже заданных перцентилей могут игнорироваться или нормализоваться.
Диапазон цветов, применяемых к значениям агрегации. Обычно используется градиент от холодных к тёплым цветам для отображения плотности.
Hexagon layer поддерживает различные функции агрегации:
Выбор агрегации влияет на смысл визуализации: от простого отображения плотности до аналитики распределения параметров.
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. При увеличении масштаба:
При уменьшении масштаба:
Это обеспечивает многомасштабный анализ данных без необходимости переключения слоёв.
Hexagon layer занимает промежуточное положение между heatmap и grid-based визуализациями.
Преимущество гексагонов проявляется в более естественном восприятии плотности и меньшей направленной искажённости.
При работе с большими наборами данных hexagon layer использует оптимизации:
Основным фактором производительности является количество точек и радиус гексагона: уменьшение радиуса увеличивает число ячеек и вычислительную нагрузку.
Hexagon layer интерпретирует данные через два визуальных канала:
Такое сочетание позволяет одновременно анализировать плотность и величину показателей, что особенно важно для задач:
Реализация слоя в Kepler.gl напрямую использует концепцию
HexagonLayer из deck.gl. Это означает:
При обработке миллионов точек hexagon layer переходит к стратегии:
Это позволяет сохранять интерактивность даже при высокой нагрузке.
Hexagon layer применяется для выявления пространственных паттернов:
Гексагональная структура делает возможным сравнение регионов без привязки к административным границам.
Слой работает в географической системе координат WGS84, но при рендеринге данные проецируются в экранные координаты через Web Mercator projection. Это обеспечивает совместимость с большинством картографических тайловых систем.
Hexagon layer формирует основу плотностной визуализации в геопространственном анализе, соединяя дискретную агрегацию с непрерывным восприятием распределений и обеспечивая масштабируемую обработку больших массивов координатных данных.