Kepler.gl реализует концепцию слоёв (layers) как фундаментальную абстракцию визуализации пространственных данных. Каждый слой представляет собой независимый визуальный модуль, который трансформирует входной набор данных в графическое представление на карте. Архитектура слоёв построена вокруг идеи декларативного описания, где конфигурация определяет поведение, а не императивный код.
Каждый слой в kepler.gl описывается объектом конфигурации, который
включает тип слоя, источники данных, правила визуализации и параметры
рендеринга. Основная структура слоя интегрируется в
visState.layers и управляется через Redux-состояние.
Ключевые поля конфигурации слоя:
id — уникальный идентификатор слояtype — тип визуализацииconfig — параметры отображенияvisualChannels — маппинг данных на визуальные
свойстваdataId — ссылка на датасетПример логической структуры:
{
id: "points-layer",
type: "point",
config: {
dataId: "my_dataset",
label: "Points Layer",
color: [255, 0, 0],
columns: {
lat: "latitude",
lng: "longitude"
}
},
visualChannels: {
colorField: null,
sizeField: null
}
}
Слой выступает промежуточным звеном между сырыми данными и WebGL-рендерингом. Внутренний pipeline обработки включает несколько этапов:
Каждый слой компилируется в один или несколько deck.gl-слоёв, что обеспечивает высокую производительность при работе с большими объёмами геоданных.
Система слоёв включает набор предопределённых типов, каждый из которых ориентирован на конкретный способ визуализации.
Используется для отображения точечных объектов. Поддерживает масштабирование, окраску и динамические свойства.
Особенности:
Предназначен для визуализации связей между двумя географическими точками. Применяется для потоков, маршрутов и миграционных данных.
Основные параметры:
Отображает линейные геометрии. Отличается от arc тем, что использует полилинии из набора координат.
Используется для:
Выполняет агрегацию данных по гексагональной сетке. Основан на пространственном биннинге.
Характеристики:
Похож на hexagon, но использует прямоугольную сетку. Применяется для более простой агрегации.
Особенности:
Позволяет отображать произвольные геометрии из GeoJSON.
Поддерживает:
Используется для визуализации плотности точек через тепловую карту.
Основные параметры:
Каждый слой использует visual channels для преобразования атрибутов данных в визуальные свойства:
colorField — определяет окраску объектовsizeField — влияет на размерheightField — используется в 3D-слояхradiusField — радиус влияния (heatmap, hexagon)Пример привязки:
visualChannels: {
colorField: {
name: "population",
type: "integer"
},
sizeField: {
name: "traffic",
type: "real"
}
}
Каждый слой обязательно связан с набором данных через
dataId. Данные хранятся в visState.datasets,
где каждый dataset содержит таблицу и метаданные.
Структура связи:
Такая модель позволяет использовать один dataset в нескольких слоях одновременно.
Перед визуализацией слой может применять встроенные трансформации:
Эти операции выполняются на этапе подготовки данных, что снижает нагрузку на рендеринг.
Каждый слой kepler.gl транслируется в один или несколько слоёв deck.gl. Это обеспечивает:
Mapping между kepler.gl слоями и deck.gl слоями происходит автоматически через внутренние фабрики.
Слои являются реактивными структурами. Изменение конфигурации приводит к пересборке визуализации:
config → пересоздание слояЭто позволяет строить интерактивные интерфейсы аналитики без ручного управления рендерингом.
Система поддерживает одновременное использование нескольких слоёв над одним набором данных или разными источниками. При этом:
Композиция используется для создания сложных визуализаций: например, heatmap + point layer для детализации плотности.
Оптимизация работы слоёв достигается за счёт:
Особенно критичны hexagon и grid слои, где используется GPU-ускоренная агрегация.
Архитектура позволяет создавать пользовательские слои через расширение базового класса Layer. Такой слой должен реализовать:
Это обеспечивает интеграцию кастомных визуализаций без изменения ядра системы.