Временные фильтры

Временные фильтры в Kepler.gl представляют собой механизм интерактивной работы с пространственно-временными данными, позволяющий ограничивать отображение объектов по диапазону времени и анимировать изменения данных во времени. Эта функциональность встроена в слой управления состоянием приложения и тесно связана с системой датасетов, где каждое временное поле интерпретируется как непрерывная или дискретная шкала.


Архитектура временных данных

Работа временных фильтров опирается на предварительную подготовку датасета. В Kepler.gl временные значения должны быть представлены в одном из поддерживаемых форматов:

  • UNIX timestamp (в миллисекундах)
  • ISO 8601 строка даты
  • числовое значение, интерпретируемое как временная ось

При загрузке данных библиотека автоматически пытается определить временные поля и преобразовать их в внутренний формат, используемый для фильтрации и анимации.

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


Механизм временного фильтра

Временной фильтр в Kepler.gl реализуется через глобальное состояние фильтров датасета. Каждый фильтр содержит:

  • поле времени (timestamp column)
  • минимальное и максимальное значение диапазона
  • текущее активное окно
  • шаг изменения (animation interval)
  • режим интерпретации (одиночная точка или диапазон)

Фильтрация выполняется на уровне слоя визуализации. Перед рендерингом каждый объект проверяется на соответствие текущему временно́му окну.


Интерактивный временной слайдер

Интерфейс временного управления реализуется через Time Slider, который позволяет:

  • задавать начало и конец временного интервала
  • перемещать активное окно по временной шкале
  • изменять длительность окна
  • запускать и останавливать анимацию

Слайдер синхронизирован с глобальным состоянием приложения, что позволяет одновременно управлять несколькими слоями, использующими один и тот же временной источник.


Режимы временной фильтрации

1. Оконный режим (Time Window)

В этом режиме отображаются все объекты, попадающие в заданный интервал:

[ t_{start} t t_{end}]

t_{start} t t_{end}

Данный режим используется для анализа плотности событий во времени, например, поездок, логов или перемещений объектов.


2. Пошаговый режим (Point Step)

Отображаются только данные, совпадающие с текущим моментом времени:

[ t = t_{current}]

t = t_{current}

Такой режим применяется для дискретной анимации событий, где важно видеть состояние системы в конкретный момент.


3. Накопительный режим (Cumulative)

Каждый следующий шаг включает все предыдущие значения:

[ t t_{current}]

t t_{current}

Используется для визуализации роста, накопления или распространения процессов.


Анимация временных данных

Kepler.gl поддерживает автоматическую анимацию временных фильтров, где изменение временного окна происходит с заданной скоростью.

Ключевые параметры анимации:

  • duration — общая длительность цикла
  • speed — скорость изменения временного окна
  • loop — зацикливание
  • auto-play — автоматический запуск

Анимация синхронизируется с рендер-циклом WebGL через слой, построенный на базе deck.gl, что обеспечивает плавное обновление больших наборов данных без блокировки интерфейса.


Привязка к временным полям датасета

Каждый датасет может содержать несколько временных колонок, однако только одна из них может быть активной для фильтрации.

Типичная конфигурация выглядит следующим образом:

  • timestamp — основное поле времени
  • start_time — начало интервала
  • end_time — конец интервала

При использовании диапазонных данных Kepler.gl интерпретирует каждую запись как интервал, а не точку.


Временные фильтры и слои визуализации

Временные фильтры применяются на уровне слоёв:

  • Point Layer — фильтрация отдельных точек
  • Arc Layer — фильтрация связей во времени
  • Trips Layer — анимация движения объектов
  • Heatmap Layer — динамическое перераспределение плотности

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


Производительность временной фильтрации

При работе с большими наборами данных временная фильтрация оптимизируется следующими механизмами:

  • предварительная индексация временных значений
  • кэширование отсортированных массивов
  • бинарный поиск по временной шкале
  • GPU-ускоренная отрисовка через WebGL

Платформа визуализации основана на инфраструктуре Mapbox, что обеспечивает интеграцию с тайловыми картами и пространственными индексами.


Синхронизация временных фильтров

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

  • независимыми
  • синхронизированными
  • связанными через глобальный временной контроллер

Синхронизация позволяет строить сложные сценарии анализа, где разные источники данных отображаются в единой временной шкале.


Обработка временных зон

Kepler.gl работает преимущественно с UTC-временем, что исключает неоднозначность при интерпретации данных из разных регионов.

При необходимости локальные временные зоны преобразуются в UTC на этапе загрузки данных, что обеспечивает консистентность фильтрации и анимации.


Интеграция с API состояния

Временные фильтры управляются через состояние приложения (Redux-подобная архитектура). Основные операции:

  • установка временного диапазона
  • обновление текущего шага
  • включение/выключение анимации
  • изменение скорости проигрывания

Изменения состояния немедленно отражаются в визуализации без перерисовки всей сцены.


Связь с системой рендеринга

Рендеринг временных фильтров тесно связан с пайплайном Kepler.gl, основанным на WebGL. Каждый кадр анимации пересчитывает только активные объекты, соответствующие текущему временному окну, что снижает нагрузку на GPU и CPU.


Расширенные сценарии использования

Временные фильтры применяются в следующих аналитических задачах:

  • анализ транспортных потоков
  • визуализация миграции населения
  • мониторинг логов и событий
  • отслеживание перемещения объектов IoT
  • моделирование распространения процессов во времени

Каждый из сценариев требует корректной подготовки временных данных и выбора подходящего режима фильтрации.


Ограничения модели времени

Несмотря на гибкость системы, существуют ограничения:

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

Эти ограничения обусловлены архитектурой клиентского рендеринга и необходимостью обработки больших массивов данных в браузере.