Временные фильтры в Kepler.gl представляют собой механизм интерактивной работы с пространственно-временными данными, позволяющий ограничивать отображение объектов по диапазону времени и анимировать изменения данных во времени. Эта функциональность встроена в слой управления состоянием приложения и тесно связана с системой датасетов, где каждое временное поле интерпретируется как непрерывная или дискретная шкала.
Работа временных фильтров опирается на предварительную подготовку датасета. В Kepler.gl временные значения должны быть представлены в одном из поддерживаемых форматов:
При загрузке данных библиотека автоматически пытается определить временные поля и преобразовать их в внутренний формат, используемый для фильтрации и анимации.
В основе лежит концепция нормализованного временного диапазона, где каждое значение приводится к единой шкале времени, что позволяет выполнять быстрые вычисления фильтрации на стороне клиента.
Временной фильтр в Kepler.gl реализуется через глобальное состояние фильтров датасета. Каждый фильтр содержит:
Фильтрация выполняется на уровне слоя визуализации. Перед рендерингом каждый объект проверяется на соответствие текущему временно́му окну.
Интерфейс временного управления реализуется через Time Slider, который позволяет:
Слайдер синхронизирован с глобальным состоянием приложения, что позволяет одновременно управлять несколькими слоями, использующими один и тот же временной источник.
В этом режиме отображаются все объекты, попадающие в заданный интервал:
[ t_{start} t t_{end}]
t_{start} t t_{end}
Данный режим используется для анализа плотности событий во времени, например, поездок, логов или перемещений объектов.
Отображаются только данные, совпадающие с текущим моментом времени:
[ t = t_{current}]
t = t_{current}
Такой режим применяется для дискретной анимации событий, где важно видеть состояние системы в конкретный момент.
Каждый следующий шаг включает все предыдущие значения:
[ t t_{current}]
t t_{current}
Используется для визуализации роста, накопления или распространения процессов.
Kepler.gl поддерживает автоматическую анимацию временных фильтров, где изменение временного окна происходит с заданной скоростью.
Ключевые параметры анимации:
Анимация синхронизируется с рендер-циклом WebGL через слой, построенный на базе deck.gl, что обеспечивает плавное обновление больших наборов данных без блокировки интерфейса.
Каждый датасет может содержать несколько временных колонок, однако только одна из них может быть активной для фильтрации.
Типичная конфигурация выглядит следующим образом:
timestamp — основное поле времениstart_time — начало интервалаend_time — конец интервалаПри использовании диапазонных данных Kepler.gl интерпретирует каждую запись как интервал, а не точку.
Временные фильтры применяются на уровне слоёв:
Каждый слой может использовать собственную логику интерпретации времени, включая интерполяцию между точками и сглаживание траекторий.
При работе с большими наборами данных временная фильтрация оптимизируется следующими механизмами:
Платформа визуализации основана на инфраструктуре Mapbox, что обеспечивает интеграцию с тайловыми картами и пространственными индексами.
При наличии нескольких датасетов временные фильтры могут быть:
Синхронизация позволяет строить сложные сценарии анализа, где разные источники данных отображаются в единой временной шкале.
Kepler.gl работает преимущественно с UTC-временем, что исключает неоднозначность при интерпретации данных из разных регионов.
При необходимости локальные временные зоны преобразуются в UTC на этапе загрузки данных, что обеспечивает консистентность фильтрации и анимации.
Временные фильтры управляются через состояние приложения (Redux-подобная архитектура). Основные операции:
Изменения состояния немедленно отражаются в визуализации без перерисовки всей сцены.
Рендеринг временных фильтров тесно связан с пайплайном Kepler.gl, основанным на WebGL. Каждый кадр анимации пересчитывает только активные объекты, соответствующие текущему временному окну, что снижает нагрузку на GPU и CPU.
Временные фильтры применяются в следующих аналитических задачах:
Каждый из сценариев требует корректной подготовки временных данных и выбора подходящего режима фильтрации.
Несмотря на гибкость системы, существуют ограничения:
Эти ограничения обусловлены архитектурой клиентского рендеринга и необходимостью обработки больших массивов данных в браузере.