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