Skip to main content

Для логистики

Новый сервис Matrix API в рамках API маршрутизации обеспечивает быстрое вычисление времени и расстояния между набором координат с учетом типа транспорта и ситуации на дороге.

Matrix API#

Matrix API позволяет устанавливать координаты пунктов отправления отдельно от местоположений пунктов назначения. Множество пунктов отправления может не пересекаться с множеством пунктов назначения. Другими словами, координаты пунктов назначения не обязаны включать в себя какие-либо координаты из пунктов отправления. Матрица времени и расстояний может возвращать строковую матрицу, столбцовую матрицу или общую матрицу, вычисляющую время и расстояние в зависимости от ваших параметров для пунктов отправления и пунктов назначения. Общий случай - это матрица, упорядоченная по строкам, содержащая время и расстояние от каждого пункта отправления до каждого пункта назначения. Строковый вектор рассматривается как матрица времени и расстояния "один ко многим", где есть один пункт отправления и несколько пунктов назначения. Возвращается время и расстояние от пункта отправления до всех пунктов назначения. Столбцовая матрица представляет собой матрицу времени и расстояния "многие к одному", где есть много пунктов отправления и одно пункт назначения. Еще один специальный случай - когда список координат пунктов отправления совпадает с списком координат пунктов назначения. Здесь возвращается диагональная матрица (квадратная матрица с [0,0.00] на диагональных элементах). Этот специальный случай часто используется в качестве входных данных для оптимизации маршрутных задач.

Входные данные#

Типичный запрос будет иметь вид https://maps.starline.ru/api/routing/matrix/sources_to_targets?json={}, где JSON внутри {} включает в себя хотя бы одну координату для sources и targets, а также тип транспорта.

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

one-to-many используя /sources_to_targets?

{"sources":[{"lat":40.744014,"lon":-73.990508}],"targets":[{"lat":40.744014,"lon":-73.990508},{"lat":40.739735,"lon":-73.979713},{"lat":40.752522,"lon":-73.985015},{"lat":40.750117,"lon":-73.983704},{"lat":40.750552,"lon":-73.993519}],"costing":"pedestrian"}

many-to-one используя /sources_to_targets?

{"sources":[{"lat":40.744014,"lon":-73.990508},{"lat":40.739735,"lon":-73.979713},{"lat":40.752522,"lon":-73.985015},{"lat":40.750117,"lon":-73.983704},{"lat":40.750552,"lon":-73.993519}],"targets":[{"lat":40.750552,"lon":-73.993519}],"costing":"pedestrian"}

many-to-many используя /sources_to_targets?

{"sources":[{"lat":40.744014,"lon":-73.990508},{"lat":40.739735,"lon":-73.979713},{"lat":40.752522,"lon":-73.985015},{"lat":40.750117,"lon":-73.983704},{"lat":40.750552,"lon":-73.993519}],"targets":[{"lat":40.744014,"lon":-73.990508},{"lat":40.739735,"lon":-73.979713},{"lat":40.752522,"lon":-73.985015},{"lat":40.750117,"lon":-73.983704},{"lat":40.750552,"lon":-73.993519}],"costing":"pedestrian"}

Параметры source и target#

При использовании метода sources_to_targets необходимо указывать sources и targets как упорядоченный список координат в виде JSON массива. Для каждой координаты в sources и targets доступны следующие параметры:

ПараметрОписание
latДолгота
lonШирота
date_timeДата/время когда курьер должнен быть по адресу в формате ISO 8601 (YYYY-MM-DDThh:mm).

Типы транспорта#

Сервис Matrix API поддерживает следующие типы транспорта: auto, bicycle и pedestrian. Дополнение: на данный момент мультимодальность не поддерживается в данном сервисе.

Дополнительные параметры#

OptionsDescription
idВы можете дать наименование вашему запросу. Если id указан, то он будет содержаться также в ответе.
matrix_locationsДля запросов "один ко многим" или "многие к одному" этот параметр указывает минимальное количество координат, удовлетворяющих запросу. Однако, при указании этой опции, допускается возвращение частичного результата. Это фактически эквивалентно "найти ближайшие/лучшие matrix_locations из полного набора координат".
date_timeДата и время для адреса/координаты.
  • type
    • 0 - текущее время отправления.
    • 1 - особое время отправления
    • 2 - время прибытия.
  • value - дата и время в формате ISO 8601 (YYYY-MM-DDThh:mm)

Время-зависимые матрицы#

Большего регулирования временных рамок можно получить используя параметр date_time для каждого адреса прибытия/отправления. Если же вы устанавливаете глобальный параметр date_time то Matrix API автоматически использует его и установит значения date_time.value для всех адресов отправлений, в случае date_time.type = 0/1, или для всех пунктов назначения, если date_time.type = 2.

Ответ на запрос матрицы расстояний#

Стандартный ответ сервис будет содержать примерно следующий набор полей:

ПолеОписание
sources_to_targetsМассив времен и расстояний между пунктами отправления и пунктами прибытия. Массив является row-ordered. Это значит что время и координаты первого адреса ко всем остальным формирует первую строку матрицы, далее второй адрес ко всем остальным и так далее
distanceРасчитанное расстояние между набором координат. Это поле всегда будет 0.00 для первого элемента массив в случае one_to_many, для последнего в случае many_to_one, или первый и последний в случае many_to_many.
timeРасчитанное время между всем набором координат. Это поле всегда будет 0 для первого элемента массив в случае one_to_many, для последнего в случае many_to_one, или первый и последний в случае many_to_many.
to_indexИндекс пункта назначения в массиве locations
from_indexИндекс пункта отправления в массиве locations
locationsМассив координат lat/lng, которые были переданы в исходном запросе.
unitsМетрическая система, использованная при расчетах. По умолчанию километры.