Агрегация данных представляет собой процесс объединения большого количества объектов в укрупнённые группы для анализа пространственных закономерностей. При работе с наборами, содержащими десятки тысяч или миллионы точек, отображение каждого объекта отдельно приводит к визуальному шуму и снижению производительности. Агрегированные представления позволяют выявлять плотность распределения данных, зоны концентрации событий и пространственные кластеры.
В экосистеме Kepler.gl агрегация реализована через специализированные типы слоёв, которые выполняют вычисления непосредственно на стороне браузера с использованием возможностей WebGL. Благодаря этому даже большие объёмы геоданных могут визуализироваться интерактивно без существенных задержек.
Основными инструментами агрегации являются:
Каждый из них предназначен для решения различных аналитических задач.
При визуализации большого количества объектов возникают следующие проблемы:
Если множество точек располагается близко друг к другу, отдельные маркеры начинают перекрывать соседние. В результате карта превращается в плотное скопление символов, которое трудно интерпретировать.
Например:
При наличии сотен тысяч записей карта становится практически нечитаемой.
Каждый объект требует вычислений:
Агрегированные слои уменьшают количество отображаемых элементов и ускоряют работу приложения.
Вместо анализа отдельных точек часто требуется определить:
Агрегация позволяет перейти от просмотра отдельных объектов к анализу структуры данных.
Hexagon Layer является одним из наиболее популярных инструментов пространственной агрегации в Kepler.gl.
Слой разбивает территорию на шестиугольники одинакового размера и вычисляет статистику для точек, попадающих внутрь каждой ячейки.
Алгоритм выполняет следующие действия:
Схематически процесс выглядит следующим образом:
Точки → Шестиугольная сетка → Подсчёт → Визуализация
Шестиугольная сетка обладает рядом преимуществ по сравнению с квадратной:
По этой причине гексагональная агрегация широко применяется в геоаналитике.
Определяет размер шестиугольника.
Малый радиус:
Большой радиус:
Управляет заполнением площади шестиугольника.
Значения:
0.0 → минимальное заполнение
1.0 → полное заполнение
Регулирует высоту трёхмерных столбцов.
Большие значения делают различия между агрегатами визуально более заметными.
Для каждой ячейки могут вычисляться различные метрики.
Подсчёт количества объектов.
Пример:
Ячейка A → 124 точки
Ячейка B → 567 точек
Ячейка C → 15 точек
Наиболее распространённый вариант анализа плотности.
Суммирование значений поля.
Например:
{
"sales": 150
}
Для группы объектов:
150 + 200 + 450 + 300 = 1100
Используется для анализа:
Расчёт среднего значения.
Пример:
(10 + 20 + 30 + 40) / 4 = 25
Подходит для отображения:
Поиск максимального значения внутри группы.
Пример:
5, 12, 20, 8, 17
Результат:
20
Определение минимального значения среди объектов.
Применяется при анализе:
После вычисления статистики Kepler.gl отображает результаты через цветовые шкалы.
Используются для непрерывных данных.
Пример:
Светлый цвет → низкое значение
Тёмный цвет → высокое значение
Подходят для:
Используются для данных с центральной точкой.
Пример:
Ниже нормы → синий
Норма → белый
Выше нормы → красный
Позволяют анализировать отклонения от среднего.
Применяются для дискретных категорий.
Пример:
Транспорт
Недвижимость
Торговля
Медицина
Каждая категория получает собственный цвет.
Grid Layer реализует агрегацию на основе квадратной сетки.
Территория разбивается на равные квадраты.
Для каждой ячейки вычисляются:
| Характеристика | Grid Layer | Hexagon Layer |
|---|---|---|
| Геометрия | Квадраты | Шестиугольники |
| Скорость вычислений | Выше | Немного ниже |
| Визуальная плавность | Ниже | Выше |
| Простота интерпретации | Высокая | Высокая |
Подходит для:
H3 Layer основан на геопространственной системе индексации, разработанной компанией Uber Technologies.
Вместо генерации сетки непосредственно на карте используется заранее определённая глобальная система шестиугольников.
Каждая область имеет уникальный идентификатор:
8928308280fffff
Такой подход обеспечивает:
Система поддерживает множество уровней детализации.
Пример:
Resolution 1 → очень крупные ячейки
Resolution 5 → города
Resolution 8 → районы
Resolution 12 → улицы
Повышение разрешения увеличивает детализацию анализа.
Cluster Layer группирует близко расположенные точки в кластеры.
В отличие от Hexagon и Grid Layer здесь отсутствует фиксированная сетка.
Алгоритм:
Пример:
● 324
Число показывает количество точек внутри кластера.
При увеличении масштаба:
1 кластер
↓
5 кластеров
↓
20 кластеров
↓
Отдельные точки
Такой подход обеспечивает удобную навигацию по данным.
Cluster Layer часто применяется для:
Heatmap Layer строит тепловую карту распределения объектов.
Вместо геометрических ячеек используется непрерывное поле интенсивности.
Каждая точка оказывает влияние на окружающую область.
Суммарное воздействие множества объектов образует зоны различной интенсивности.
Условный пример:
Синий → низкая плотность
Жёлтый → средняя плотность
Красный → высокая плотность
Один из ключевых параметров тепловой карты.
Определяет радиус влияния точки.
Малые значения:
Большие значения:
Вес точки может определяться отдельным полем.
Пример данных:
{
"lat": 51.12,
"lng": 71.43,
"orders": 250
}
Поле:
orders
Будет определять силу влияния объекта на итоговую карту.
Kepler.gl поддерживает отображение агрегированных данных в трёхмерном виде.
Экструзия преобразует агрегированные области в объёмные столбцы.
Высота может зависеть от:
Позволяет быстро выявлять:
Особенно эффективно работает для городской аналитики.
Используются параметры:
Elevation Scale
Elevation Range
Height Based On
Корректная настройка помогает избежать чрезмерного визуального искажения данных.
Агрегация в Kepler.gl тесно связана с системой фильтров.
Перед вычислением статистики данные могут быть отфильтрованы по:
Пример:
Январь 2025
Февраль 2025
Март 2025
После изменения периода агрегаты пересчитываются автоматически.
Это позволяет строить динамическую аналитику и исследовать изменения во времени.
Пример:
Тип транспорта = Автобус
Все остальные объекты исключаются из расчётов.
При работе с крупными наборами данных важно учитывать особенности вычислений.
Количество записей напрямую влияет на:
Практически комфортно обрабатываются сотни тысяч и даже миллионы точек при грамотной настройке слоёв.
Слишком маленькие ячейки приводят к:
Слишком крупные ячейки:
Размер сетки должен соответствовать масштабу исследуемой территории.
Для очень больших объёмов данных часто применяется предвычисление агрегатов на сервере.
Сценарий:
База данных
↓
SQL-агрегация
↓
GeoJSON/H3
↓
Kepler.gl
Такой подход существенно уменьшает объём передаваемой информации.
Агрегация позволяет определять:
Наиболее часто используются:
Агрегирование по регионам помогает выявлять:
Обычно применяются:
Позволяет исследовать:
Наиболее удобны:
Примеры:
Агрегация позволяет оперативно выявлять очаги повышенной активности и анализировать пространственное распределение событий в реальном времени.