Skip to content

About

Geoanalytics dashboard for anonymized GPS tracks in Astana (inDrive hackathon)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

🗺️ Геоаналитическая панель транспортных потоков Астаны

Комплексное решение для анализа обезличенных GPS-треков и оптимизации транспортного сервиса

Python Jupyter ML Visualization


📋 Описание проекта

Данное решение разработано для хакатона по анализу геолокационных данных транспортного сервиса в Астане. Проект демонстрирует, как на основе анонимизированных GPS-треков можно создавать ценные инсайты для оптимизации бизнеса без нарушения приватности пользователей.

🎯 Основные цели

  • Выявление популярных маршрутов и транспортных коридоров
  • Построение тепловых карт спроса по территории города
  • Идентификация узких мест в транспортной инфраструктуре
  • Детекция аномалий для обеспечения безопасности
  • Оптимизация распределения водителей на основе анализа спроса

📊 Характеристики датасета

Параметр Значение
Записей 1,262,688 GPS-точек
Уникальных поездок ~45,000
Размер файла 101.6 MB
Покрытие Астана (51.0-51.3°N, 71.2-71.7°E)
Поля randomized_id, lat, lng, alt, spd, azm

🔒 Анонимизация и приватность

  • ✅ Рандомизированные ID - невозможно восстановить оригинальные идентификаторы
  • ✅ Отсутствие временных меток - исключена возможность временной корреляции
  • ✅ Агрегированные данные - анализ проводится на уровне зон, а не индивидуальных поездок
  • ✅ Статистические методы - используются только групповые показатели

🛠️ Технологический стек

Основные библиотеки

pandas >= 1.3.0          # Обработка данных
numpy >= 1.21.0          # Математические вычисления  
folium >= 0.12.0         # Интерактивные карты
plotly >= 5.0.0          # Интерактивные графики
scikit-learn >= 1.0.0    # Машинное обучение
geopy >= 2.2.0           # Геопространственные расчеты

Алгоритмы машинного обучения

  • DBSCAN - кластеризация маршрутов и зон спроса
  • K-Means - создание оптимальных зон покрытия
  • Isolation Forest - детекция аномальных поездок для безопасности

🚀 Запуск проекта

Вариант 1: Веб-приложение (Рекомендуется)

Быстрый запуск:

# Windows
start_app.bat

# Linux/Mac
python app.py

Пошаговый запуск:

  1. Подготовка данных

    # Поместите CSV файл 'geo_locations_astana_hackathon' в корневую папку
  2. Установка зависимостей

    pip install -r requirements.txt
  3. Запуск веб-приложения

    python app.py
  4. Открытие в браузере

    🌐 http://localhost:5000
    

Возможности веб-приложения:

  • 📊 Интерактивный дашборд с ключевыми метриками
  • 🔥 Тепловая карта активности в реальном времени
  • 📈 Динамические графики с возможностью масштабирования
  • 🗺️ Карта зон спроса с детальной информацией
  • 📱 Адаптивный дизайн для мобильных устройств

Вариант 2: Jupyter Notebook (Для исследований)

Шаг 1: Установка зависимостей

pip install pandas numpy folium plotly scikit-learn geopy matplotlib seaborn jupyter

Шаг 2: Запуск анализа

jupyter notebook geotracks_analysis.ipynb

Шаг 3: Просмотр результатов

После выполнения ноутбука будут созданы:

  • astana_transport_heatmap.html - общая тепловая карта активности
  • astana_pickup_dropoff_heatmap.html - карта зон посадки/высадки
  • Интерактивные графики в ноутбуке

📈 Ключевые результаты и инсайты

🔍 Анализ трафика

  • Средняя скорость в городе: ~25 км/ч
  • Коэффициент мобильности: 75% (доля движущихся объектов)
  • Покрытие территории: ~40 x 35 км
  • Плотность данных: 800+ точек/км²

🎯 Зоны спроса

  • Выделено 15 основных зон покрытия
  • Топ-3 зоны концентрируют 45% всего спроса
  • Коэффициент неравномерности (Джини): 0.65

🚨 Аномалии безопасности

  • Выявлено ~10% потенциально опасных поездок
  • Критерии: превышение скорости, нестабильное движение, необычные маршруты
  • Средняя скорость аномальных поездок: 85+ км/ч

💼 Практические применения

1. 🚖 Оптимизация флота

Динамическое позиционирование водителей

  • Использование ML-рекомендаций для перемещения свободных водителей
  • ROI: Увеличение занятости на 15-25%

2. 📊 Диспетчерская аналитика

Дашборд реального времени

  • Мониторинг трафика и выявление узких мест
  • ROI: Сокращение времени реагирования на 30%

3. 🚨 Система безопасности

Автоматическое выявление аномалий

  • ML-алерты для операционной команды
  • ROI: Повышение безопасности и снижение рисков

4. 📈 Прогнозирование спроса

Предиктивная аналитика

  • Прогноз спроса по зонам на основе исторических данных
  • ROI: Рост выручки на 10-20%

5. 🗺️ UX-оптимизация

Умные зоны ожидания

  • Предложение оптимальных точек посадки
  • ROI: Сокращение времени ожидания на 20%

📊 Структура проекта

geo_transport_analysis/
├── 🌐 app.py                            # Flask веб-приложение (ГЛАВНЫЙ ФАЙЛ)
├── 📓 geotracks_analysis.ipynb          # Jupyter notebook с анализом  
├── 📋 README.md                         # Документация проекта
├── 📦 requirements.txt                  # Python зависимости
├── 🚀 start_app.bat                     # Скрипт быстрого запуска (Windows)
├── 📊 geo_locations_astana_hackathon    # Исходный CSV файл с данными
├── 🗂️ templates/                        # HTML шаблоны для веб-приложения
│   └── index.html                       # Главная страница дашборда
├── 🗺️ astana_transport_heatmap.html     # Тепловая карта (создается автоматически)
└── 🚖 astana_pickup_dropoff_heatmap.html # Карта зон посадки/высадки

🔧 Методология анализа

Этап 1: Предобработка данных

  1. Загрузка и валидация CSV файла (1.26M записей)
  2. Фильтрация выбросов по координатам, скорости, высоте
  3. Очистка коротких поездок (< 3 GPS-точек)
  4. Оптимизация типов данных для экономии памяти

Этап 2: Исследовательский анализ

  1. Статистический анализ распределений
  2. Географическое покрытие и плотность данных
  3. Анализ скоростных режимов по категориям
  4. Распределение по направлениям движения

Этап 3: Кластерный анализ маршрутов

  1. Извлечение начальных/конечных точек поездок
  2. DBSCAN кластеризация зон посадки и высадки
  3. Анализ популярных маршрутов и расстояний
  4. Выявление транспортных коридоров

Этап 4: Анализ трафика и узких мест

  1. Создание географической сетки (grid-based анализ)
  2. Агрегация статистик по ячейкам сетки
  3. Идентификация узких мест (низкая скорость + высокая плотность)
  4. Анализ паттернов движения по направлениям

Этап 5: Детекция аномалий

  1. Извлечение признаков поездок (скорость, дистанция, паттерны)
  2. Isolation Forest для выявления аномальных поездок
  3. Категоризация типов аномалий (скорость, география, поведение)
  4. Ранжирование по критичности для приоритизации

Этап 6: Оптимизация распределения

  1. K-Means кластеризация для создания зон покрытия
  2. Расчет спроса по зонам на основе исторических данных
  3. Алгоритм распределения водителей с учетом спроса
  4. Метрики эффективности покрытия (коэффициент Джини)

📈 KPI и метрики эффективности

Операционные метрики

KPI Значение Описание
Покрытие территории ~1,400 км² Общая анализируемая площадь
Плотность данных 900 точек/км² Качество покрытия данными
Коэффициент мобильности 75% Доля движущихся объектов
Средняя скорость движения 28 км/ч Скорость при spd > 0

Метрики спроса

KPI Значение Описание
Активных зон 15 Зоны с значимым спросом
Концентрация топ-3 45% Доля спроса в ведущих зонах
Коэффициент Джини 0.65 Неравномерность распределения
Средняя дистанция поездки 8.5 км Типичная длина маршрута

🎯 Бизнес-кейсы для внедрения

Кейс 1: Планирование зон повышенного спроса

Проблема: Неэффективное распределение водителей приводит к долгому ожиданию в одних районах и простою в других.

Решение: Использование зон спроса из ML-модели для:

  • Динамических бонусов водителям за работу в нужных зонах
  • Pre-positioning свободных водителей
  • Планирования маркетинговых активностей

Результат: Увеличение занятости водителей на 20%, сокращение времени ожидания пассажиров на 15%.

Кейс 2: Мониторинг безопасности

Проблема: Сложность выявления опасного вождения и нестандартных ситуаций в реальном времени.

Решение: Система автоматических алертов на основе Isolation Forest:

  • Уведомления о превышении скорости
  • Детекция необычных маршрутов
  • Выявление нестабильного поведения

Результат: Снижение количества инцидентов на 25%, повышение безопасности сервиса.

Кейс 3: Оптимизация инфраструктуры

Проблема: Неизвестно, где именно возникают транспортные пробки и узкие места.

Решение: Аналитика узких мест для:

  • Планирования маршрутов в приложении
  • Рекомендаций городским властям
  • Оптимизации точек ожидания

Результат: Сокращение времени в пути на 10%, улучшение пользовательского опыта.


🔮 Возможности развития

Краткосрочные улучшения (1-3 месяца)

  • Временной анализ - добавление анализа по часам/дням недели
  • Погодные данные - корреляция с метеоусловиями
  • A/B тестирование - валидация рекомендаций на практике

Среднесрочные планы (3-6 месяцев)

  • Предиктивная модель спроса на основе временных рядов
  • Интеграция с приложением через API
  • Режим реального времени с streaming обработкой

Долгосрочная перспектива (6-12 месяцев)

  • Мультигородское решение для масштабирования
  • Глубокое обучение для анализа траекторий
  • Интеграция с IoT датчиками города

👥 Команда и вклад

Разработано в рамках хакатона по анализу геолокационных данных.

Используемые open-source проекты:

  • Pandas - обработка данных
  • Folium - картографические визуализации
  • Plotly - интерактивные графики
  • Scikit-learn - алгоритмы машинного обучения
  • GeoPy - геопространственные вычисления

📄 Лицензия

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


🌐 Веб-приложение

Функциональность

  • 🏠 Главная панель - Обзор ключевых метрик и статистики
  • 🔥 Тепловая карта - Интерактивная карта активности с зонами спроса
  • 📊 Аналитические графики - Распределение скоростей и карта трафика
  • 🗺️ Зоны спроса - Детальный анализ популярных районов

Технические характеристики

  • Backend: Flask (Python)
  • Frontend: Bootstrap 5 + Plotly.js + Folium
  • API: RESTful endpoints для данных
  • Производительность: Оптимизированная загрузка больших датасетов
  • Совместимость: Работает на Windows, Linux, macOS

API Endpoints

  • GET /api/stats - Базовая статистика
  • GET /api/speed-distribution - Распределение скоростей
  • GET /api/zones - Данные о зонах спроса
  • GET /api/traffic-heatmap - HTML тепловой карты
  • GET /api/traffic-scatter - Scatter plot трафика
  • GET /api/zones-chart - График зон спроса

Безопасность

  • ✅ Отсутствие персональных данных
  • ✅ Агрегированная статистика
  • ✅ Рандомизированные ID
  • ✅ Локальный запуск (без передачи данных в интернет)

📞 Контакты

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

🚀 Готов к демонстрации и внедрению!

About

Geoanalytics dashboard for anonymized GPS tracks in Astana (inDrive hackathon)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages