Ключевые факты
- Проект визуализирует 291 миллион поездок на Citi Bike.
- Работает без бэкенда, используя DuckDB WASM и Cloudflare CDN.
- Пользователи могут искать поездки с помощью Cmd + K и данных чека.
- Маршруты генерируются с помощью OSRM для пар станций (2400+).
Краткая сводка
Была выпущена масштабная визуализация, отображающая полную историю поездок на Citi Bike. Проект отслеживает 291 миллион отдельных поездок, позволяя пользователям наблюдать за потоком велосипедов по сети.
Инструмент полностью открыт и работает в браузере без бэкенда. Он использует DuckDB WASM для запросов к данным, хранящимся на CDN Cloudflare, что обеспечивает высокую производительность и доступность.
Пользователи могут найти свою конкретную поездку с помощью сочетания клавиш Cmd + K и данных из чека. Для визуализации используется deck.gl в связке с Mapbox для рендеринга тысяч одновременно анимированных велосипедов.
Визуализация 291 миллиона поездок
Проект представляет каждую поездку на велосипеде в виде движущейся стрелки на карте, создавая динамичный взгляд на историю сети проката велосипедов. С общим количеством визуализированных поездок в 291 миллион, инструмент предлагает уникальный взгляд на городскую мобильность.
Пользователи могут напрямую взаимодействовать с данными. Нажав Cmd + K, они могут найти свою конкретную поездку, используя данные с чека Citi Bike, а именно время поездки и названия начальной и конечной станций.
Каждая движущаяся стрелка представляет реальную поездку на велосипеде, а значит, любой, кто пользовался сервисом, включен в визуализацию. Проект подчеркивает масштаб системы Citi Bike в США.
Техническая архитектура
Визуализация достигает своей производительности благодаря определенному техническому стеку, ориентированному на эффективность. Ключевой особенностью является то, что для работы приложения не требуется бэкенд.
Обработка данных опирается на файлы parquet, хранящиеся на CDN Cloudflare. Эти файлы запрашиваются напрямую с помощью DuckDB WASM, что позволяет проводить сложный анализ данных на стороне клиента.
Для рендеринга проект использует deck.gl в сочетании с Mapbox. Эта комбинация обеспечивает рендеринг с ускорением на GPU, который необходим для обработки тысяч одновременно анимированных велосипедов без задержек.
Фоновая обработка выполняется с помощью Web Workers. Эти воркеры декодируют маршруты полилиний и выполняют максимально возможное количество предварительных вычислений в отдельном потоке, чтобы сохранить плавность взаимодействия с пользователем.
Генерация маршрутов и данные
Визуализация сталкивается с определенной проблемой данных: исходные данные содержат только пары начальных и конечных станций, но не сами пройденные пути. Для решения этой проблемы проект генерирует реалистичные маршруты.
Маршруты создаются путем запросов к OSRM (Open Source Routing Machine). Система вычисляет кратчайший путь между всеми 2400+ парами станций, чтобы точно анимировать движение велосипедов.
Проект полностью открыт и доступен на GitHub. Это позволяет разработчикам изучить код, понять детали реализации или внести свой вклад в проект.




