Kepler.gl предоставляет набор механизмов для сопоставления и анализа нескольких наборов пространственных данных в едином интерфейсе. Сравнение данных в этой системе строится не как отдельная функция, а как комбинация слоёв, фильтров, визуальных переменных и режимов отображения карты.
Ключевой принцип сопоставления данных в Kepler.gl — наложение нескольких слоёв (layers) на одну карту. Каждый слой может представлять отдельный датасет или отдельное представление одного и того же набора данных.
Основные типы слоёв:
Сравнение достигается через одновременное отображение нескольких слоёв с разными стилями и источниками данных.
const config = {
datasets: [
{
info: { label: "Dataset A" },
data: geoDataA
},
{
info: { label: "Dataset B" },
data: geoDataB
}
],
config: {
visState: {
layers: [
{
id: "layer_a",
type: "point",
config: {
dataId: "Dataset A",
color: [255, 0, 0],
columns: {
lat: "lat",
lng: "lng"
}
}
},
{
id: "layer_b",
type: "point",
config: {
dataId: "Dataset B",
color: [0, 0, 255],
columns: {
lat: "lat",
lng: "lng"
}
}
}
]
}
}
};
Разделение слоёв по цвету и источнику данных формирует базовую визуальную дифференциацию.
Цветовая модель является ключевым механизмом сопоставления:
Часто используется подход «один датасет — один цвет», что позволяет мгновенно выявлять пересечения, плотности и аномалии.
{
id: "comparison_layer",
type: "point",
config: {
dataId: "Dataset A",
colorField: "category",
colorRange: {
colors: ["#ff4d4f", "#40a9ff", "#73d13d"]
}
}
}
Цветовое сравнение особенно эффективно при наложении временных срезов или региональных различий.
Фильтры в Kepler.gl позволяют ограничивать отображение данных по временным, числовым и категориальным признакам. Это создаёт динамическое сравнение внутри одного слоя или между слоями.
Типовые сценарии:
Фильтры могут применяться одновременно к нескольким слоям, обеспечивая синхронное сравнение.
visState: {
filters: [
{
dataId: ["Dataset A", "Dataset B"],
id: "time_filter",
name: "timestamp",
type: "timeRange",
value: [1609459200000, 1640995200000]
}
]
}
Синхронизация фильтров создаёт эффект параллельного анализа изменений.
Временные данные в Kepler.gl позволяют сравнивать состояния системы в разные моменты времени. При наличии временного поля используется анимация, которая визуализирует изменения.
Основные подходы:
{
id: "time_layer",
type: "point",
config: {
dataId: "Dataset A",
columns: {
lat: "lat",
lng: "lng",
timestamp: "time"
},
animation: {
enabled: true,
speed: 1
}
}
}
Анимация позволяет воспринимать различия не как статические отклонения, а как процесс.
Режим разделённого экрана используется для прямого сравнения двух картографических представлений. Он полезен при анализе изменений параметров или альтернативных моделей данных.
Характерные сценарии:
В этом режиме каждый слой может быть привязан к отдельной карте, но синхронизирован по масштабу и позиции.
Hexagon и Grid слои применяются для сравнения плотности распределений. Вместо точечных объектов используется агрегация по пространственным ячейкам.
Преимущества:
{
id: "hex_layer",
type: "hexagon",
config: {
dataId: "Dataset B",
radius: 200,
colorRange: {
colors: ["#fef0d9", "#fdcc8a", "#fc8d59", "#e34a33"]
}
}
}
Сопоставление двух агрегированных слоёв позволяет выявить различия в плотности даже при больших объёмах данных.
Помимо геометрии, сравнение данных может строиться на числовых атрибутах:
Такой подход позволяет кодировать разницу величин непосредственно в визуальной структуре карты.
Типовой сценарий включает:
const layers = [
{
id: "sales_2023",
type: "point",
config: {
dataId: "Sales 2023",
color: [255, 99, 132]
}
},
{
id: "sales_2024",
type: "point",
config: {
dataId: "Sales 2024",
color: [54, 162, 235]
}
}
];
Такое наложение позволяет визуально оценить изменения между периодами, включая рост плотности, смещение кластеров и появление новых точек.
Несмотря на гибкость, модель сравнения в Kepler.gl имеет ряд ограничений:
Эти ограничения компенсируются грамотной декомпозицией слоёв и использованием агрегации вместо прямого отображения точек.