На основе сервиса Яндекс.Пробки мы нарисовали красивые шевелящиеся картинки на карте Московской области. В нашем Пробкоскопе (tm) можно посмотреть, как выглядит транспортная ситуация за неделю в Московской области в целом и для каждой конкретной точки в квадрате 200 x 200 км вокруг Москвы.
Мудрый Яндекс приучил нас узнавать информацию о пробках, когда мы отправляемся в путь.
А что, если мы хотим найти на карте место, свободное от пробок? Или почти свободное. Или посмотреть, насколько затруднительно добираться туда, где нам предлагают выгодно купить дачу под Москвой. Или выбрать лучший день, когда можно съездить навестить бабушку в деревне Дурниха или тетушку в поселке Чулково-Club. Сейчас по Яндекс.Пробкам путь туда выглядит неплохо, а что бывает в пятницу вечером? В воскресенье?
Для этого нужно посмотреть на карту Подмосковья немного под другим углом. И в этом нам поможет Пробкоскоп.
Мы нанесли на карту цветом удаленность по времени от центра Москвы. С учетом пробок, в разное время суток, в разные дни недели. И вот что у нас получилось:
Чтобы получить исходные данные, мы просто спросили у Яндекса, сколько времени уйдет на дорогу от центра Москвы до каждой точки на карте, и раскрасили каждую точку соответствующим цветом. Конечно же, если бы мы спрашивали у Яндекса 10 тысяч маршрутов (а именно столько точек мы раскрашиваем на карте), нас давно бы забанили. Мы поступили несколько осторожнее: на каждом шоссе, идущем из Москвы, расставили точки через каждые 10 километров. Затем вежливо попросили API Яндекс.Карт построить маршрут на 120 км из центра Москвы через эти точки и тщательно записали, сколько времени займет дорога между этими точками.
Но если бы мы показывали только опорные точки (по одной на каждые 10 км основных шоссе из Москвы), картинка получилась бы крайне скучной. Так что нам все-таки нужно было узнать, сколько времени необходимо, чтобы добраться до каждой из 10 тысяч точек рассматриваемого квадрата.
Берем точки, одну за другой. Для каждой ищем в базе три ближайшие опорные точки (из тех, которые были изначально расставлены через 10 км вдоль каждого шоссе). По графу дорог из OSM считаем расстояние от данной точки до каждой из трех опорных точек. На графе OSM указана максимальная скорость на каждом ребре-дороге. Считаем, что от опорной точки до нужной можно добраться без пробок (смелое, но допустимое упрощение). Из трех вариантов (время по Яндексу до опорной точки + время по OSM от нее до рассматриваемой точки) находим лучший, его и наносим на карту. И так 10 тысяч раз. Теперь, конечно, интересно посмотреть на это в динамике. Ну и гипнотическая картинка «дыхания» подмосковных пробок, получившаяся в результате:
Что мы использовали для построения таких красивых картинок:
- Всеми любимый API Яндекс.Карт,
- Замечательную JavaScript-библиотеку для отображения данных и карт — Leaflet,
- Замечательный сервер для рендеринга карт — Mapnik,
- В качестве хранилища — PostgreSQL,
- Бэкэнд — Django,
- Данные — OSM.
Также мы сделали возможность посмотреть «Пробковый профиль» каждой точки нашего подмосковного квадрата.
Сергиев-Посад
Дмитров — авария в понедельник
Волоколамск
Что хотим еще сделать. Картинки, демонстрирующие время на дорогу в центр (сейчас показывается время в пути из центра Москвы).
Нарисовать аналогичные картинки и собрать данные для других городов (если будет интерес пользователей).
Показывать более обширную статистику для точки, а не только за последние несколько недель.
Попробовать самим можно на созданном нами сайте. Ваши комментарии?
Автор: eyeofhell