API Матрицы расстояний

Матрица расстояний — это API, который рассчитывает длину и продолжительность попарных маршрутов для всех комбинаций точек отправления и назначения. Инструмент учитывает ситуацию на дорогах и прогноз на заданное время.

Матрицу расстояний можно использовать двумя способами: как HTTP-API с помощью прямого запроса по HTTP или в составе JS API и MapKit SDK.

Матрица расстояний позволяет рассчитать длину и продолжительность маршрутов пешком, на легковом автомобиле, грузовике, общественном транспорте, велосипеде и самокате. Инструмент не выдает геометрию маршрута, а предоставляет только два значения — длину маршрута и время его прохождения. При расчете он учитывает текущие, прогнозируемые и исторические пробки. Это дает возможность рассчитать маршруты на заданное время в будущем. При этом составлять маршруты на заданное время в прошлом — невозможно.

Принцип работы матрицы

Формирование запросов к Матрице расстояний осуществляется не из точки отправления А в точку назначения B, а с помощью множества точек отправления и назначения А и B. В результате получается матрица в виде таблицы, где каждой точке А соответствуют все точки B. Точки А располагаются в строках таблицы, точки В — в столбцах, а на пересечении строк и столбцов находятся ячейки с информацией о дистанции и времени маршрута для каждой пары точек А и В.

Размер матрицы определяется количеством точек отправления и назначения, для которых рассчитаны маршруты между ними.

Стандартная версия API рассчитывает матрицы размером до 10 на 10 точек отправления и назначения за один HTTP-запрос менее чем за 300 миллисекунд. Чтобы сформировать более сложные матрицы, нужно разбить их на несколько запросов или использовать асинхронный API. При асинхронных запросах размер матрицы ограничен 25 миллионами элементов. Пользователям с большим автопарком это позволяет оптимизировать любое количество маршрутов и сократить сроки доставки.

В запросах можно задать настройки маршрута: исключать платные дороги, добавлять вес, габариты или другие параметры грузовика. Так же можно исключать из маршрута конкретные зоны, например сложные перекрестки, опасные участки или территории, границы которых пользователи определяют самостоятельно в зависимости от своих бизнес-целей. При расчете продолжительности и длины маршрута количество поворотов налево сводится к минимуму. Это помогает уменьшить время в пути и избежать сложных маневров, что важно для крупнотоннажных грузовиков.

Критерии при построении матрицы

  • Правила дорожного движения.
  • Время проезда в настоящий момент.
  • Время проезда на основе прогноза и исторических значений.
  • Дорожная ситуация: перекрытия дорог, строительные работы и другое.
  • Погодные условия.
  • Ограничения в параметрах запроса, которые указал пользователь: например, исключение конкретных участков дорог.

Ограничения и особенности применения инструмента

Матрица расстояний в ответ на запрос не предоставляет геометрию маршрута. Чтобы ее получить, можно использовать API Получение деталей маршрута.

Матрица расстояний не решает задачу коммивояжера — не строит оптимальный маршрут между всеми точками. Для построения оптимального маршрута между множеством точек также можно использовать API Получение деталей маршрута. Если нужна более сложная логика оптимизации, можно разрабатывать ее на стороне клиента или использовать сервисы Яндекс Маршрутизации. Они помогают построить оптимальный маршрут проезда по всем точкам. Он строится на базе расчетов Матрицы расстояний — расстояния и времени для всех пар маршрутов.

Перерасчет матрицы с течением времени

Чтобы не нарушить оптимальную последовательность проезда точек, перед построением маршрута необходимо всегда указывать время отправления. Оптимальный маршрут на основе данных Матрицы расстояний со временем может терять актуальность из-за изменения ситуации на дорогах.

Преимущество Яндекса заключается в высокой точности предсказаний скорости проезда. Это возможно благодаря историческим о скорости проезда на каждом ребре дорожного графа.

При построении матриц учитываются разные точки подъезда для одной точки назначения. Это актуально, когда есть большое расстояние между разными вариантами подъезда к точке. Например, если к складу существует подъезд с нескольких сторон, при построении матрицы матриц определяет, как выбрать оптимальный — тот, от которого можно быстрее проехать к следующей точке. При этом матрица для такой точки назначения отдает два варианта расчета времени и расстояния. А учитывать этот фактор и выбирать оптимальный вариант уже будет алгоритм построения оптимального маршрута.

Сценарии использования

  • Определение ближайшего объекта. Это необходимо при заказе такси или курьера, поиске ресторанов, ближайших станций метро и других объектов на карте. Например, Матрица расстояний используется при расчете времени подачи машины в Яндекс Такси.
  • Оптимизация маршрутов — используется внутри алгоритма.
  • Расчет времени доставки.
  • Определение возможности и расчета стоимости доставки товара в конкретный пункт.