Сравнение данных

Kepler.gl предоставляет набор механизмов для сопоставления и анализа нескольких наборов пространственных данных в едином интерфейсе. Сравнение данных в этой системе строится не как отдельная функция, а как комбинация слоёв, фильтров, визуальных переменных и режимов отображения карты.

Ключевой принцип сопоставления данных в Kepler.gl — наложение нескольких слоёв (layers) на одну карту. Каждый слой может представлять отдельный датасет или отдельное представление одного и того же набора данных.

Основные типы слоёв:

  • Point Layer — точечные объекты (события, координаты объектов)
  • Arc Layer — связи между точками
  • Line Layer — маршруты и траектории
  • Polygon Layer — области и границы
  • Hexagon/Grid 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
    }
  }
}

Анимация позволяет воспринимать различия не как статические отклонения, а как процесс.

Split View и параллельные карты

Режим разделённого экрана используется для прямого сравнения двух картографических представлений. Он полезен при анализе изменений параметров или альтернативных моделей данных.

Характерные сценарии:

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

В этом режиме каждый слой может быть привязан к отдельной карте, но синхронизирован по масштабу и позиции.

Агрегирующие слои для сравнения плотности

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

Преимущества:

  • снижение визуального шума;
  • выявление кластеров;
  • сравнение распределений на разных датасетах.
{
  id: "hex_layer",
  type: "hexagon",
  config: {
    dataId: "Dataset B",
    radius: 200,
    colorRange: {
      colors: ["#fef0d9", "#fdcc8a", "#fc8d59", "#e34a33"]
    }
  }
}

Сопоставление двух агрегированных слоёв позволяет выявить различия в плотности даже при больших объёмах данных.

Сравнение через визуальные метрики

Помимо геометрии, сравнение данных может строиться на числовых атрибутах:

  • высота (extrusion в 3D слоях);
  • прозрачность;
  • размер точек;
  • интенсивность цвета.

Такой подход позволяет кодировать разницу величин непосредственно в визуальной структуре карты.

Практическая модель сравнения двух датасетов

Типовой сценарий включает:

  1. загрузку двух наборов данных;
  2. создание отдельных слоёв;
  3. назначение разных цветовых схем;
  4. синхронизацию фильтров;
  5. настройку масштаба и центра карты.
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 имеет ряд ограничений:

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

Эти ограничения компенсируются грамотной декомпозицией слоёв и использованием агрегации вместо прямого отображения точек.