Как работают Яндекс.Пробки

Яндекс.Пробки показывают пользователям картину загруженности дорог. Для этого сервис собирает из разных источников данные о загруженности улиц, анализирует их и отображает на Яндекс.Картах. В наиболее крупных городах, где пробки — серьезная проблема, а не просто неприятность, сервис рассчитывает балл пробок — средний уровень загруженности. Чтобы понять, как именно работают Яндекс.Пробки, рассмотрим весь путь — от реальной дорожной ситуации на дороге до ее изображения на сервисе. Технология сервиса устроена таким образом, что информацию о пробках собирают в том числе и сами пользователи. То есть можно сказать, что водители помогают водителям объезжать пробки.

Источники данных

Для наглядности представим, что мы с вами — ДТП на Страстном бульваре перед Петровкой (небольшое и без жертв). Своим появлением мы перегородили, допустим, два ряда из существующих трёх. Автомобилисты, которые двигались по нашим рядам, вынуждены объезжать нас, а водители, перемещавшиеся по третьему ряду, — пропускать объезжающих. Некоторые из них — пользователи приложений Яндекс.Карты и Яндекс.Навигатор, и их мобильные устройства передают Яндекс.Пробкам данные о движении автомобиля. По мере приближения машин этих пользователей к нашему ДТП их скорость будет уменьшаться, и устройства начнут «сообщать» сервису о заторе.
Чтобы участвовать в сборе данных, автомобилисту необходимы: подключенный к интернету телефон или планшет с GPS-приёмником и установленное на этом устройстве приложение Яндекс.Навигатор или Яндекс.Карты с включенным режимом «сообщать о пробках». Каждые несколько секунд устройство передаёт свои географические координаты, направление и скорость движения в компьютерную систему Яндекс.Пробок. Все данные обезличены, то есть не содержат никакой информации о пользователе или его автомобиле. Затем программа-анализатор строит единый маршрут движения с информацией о скорости его прохождения — трек. Треки поступают не только от частных водителей, но и от машин компаний-партнеров Яндекса (организации с большим парком автомобилей, курсирующих по городу).
Помимо своих координат автомобилисты могут сообщать сервису дополнительную информацию об авариях, ремонтных работах или других дорожных неприятностях. Например, какой-нибудь сознательный водитель, увидев наше ДТП, предупредил о нём других автолюбителей, поставив соответствующую точку в мобильных Яндекс.Картах.

Технология обработки треков

GPS-приёмники допускают погрешности при определении координат, что затрудняет построение трека. Погрешность может «сместить» автомобиль на несколько метров в любую сторону, например, на тротуар или крышу рядом стоящего здания. Координаты, поступающие от пользователей, попадают на электронную схему города, на которой очень точно отображены все здания, парки, улицы с дорожной разметкой и прочие городские объекты. Благодаря этой детализации программа понимает, как на самом деле двигался автомобиль. Например, в том или ином месте машина не могла выехать на встречную полосу или поворот был совершен по дорожной разметке, не «срезая» угол.
Чтобы правильно воссоздать картину загруженности дорог, необходимо проверять, соответствует ли трек ситуации на своём участке. Пользователи мобильных Яндекс.Карт могут иногда останавливаться или замедлять движение не из-за пробки, а, например, чтобы купить что-нибудь в киоске или не пропустить малозаметный поворот. И если мимо свободно едут еще несколько автомобилей с мобильными устройствами, такой трек будет отсеян алгоритмом, потому что не отображает реальную загруженность участка. Поэтому, чем больше пользователей у сервиса, тем точнее информация о дорожной ситуации.
После объединения проверенных треков алгоритм анализирует их и выставляет «зелёные», «жёлтые» и «красные» оценки соответствующим участкам дорог.

Объединение данных

Далее происходит агрегация — процесс объединения информации. Каждые две минуты программа-агрегатор собирает, как мозаику, информацию, полученную от пользователей мобильных Яндекс.Карт в одну схему. Эта схема отрисовывается на слое «Пробки» Яндекс.Карт — и в мобильном приложении, и на веб-сервисе.

Шкала баллов

В Москве, Санкт-Петербурге и других крупных городах сервис Яндекс.Пробки оценивает ситуацию по 10-балльной шкале (где 0 баллов — свободное движение, а 10 баллов — город «стоит»). С помощью этой оценки водители могут быстро понять, сколько примерно времени они потеряют в пробках. Например, если средний балл по Киеву равен семи, то дорога займёт приблизительно в два раза больше времени, чем при свободном движении.
Шкала баллов настроена по-разному для каждого из городов: то, что в Москве — небольшое затруднение, в другом городе — уже серьёзная пробка. Например, в Санкт-Петербурге при шести баллах водитель потеряет примерно столько же времени, сколько в Москве уже при пяти.
Баллы рассчитываются следующим образом. По улицам каждого города заранее составлены маршруты, включающие в себя основные шоссе и проспекты. Для каждого маршрута есть эталонное время, за которое его можно проехать по свободной дороге, не нарушая правил. После оценки общей загруженности города программа-агрегатор рассчитывает, на сколько отличается реальное время от эталонного. На основе разницы по всем маршрутам и вычисляется загруженность в баллах.