Оптимизация маршрута
Оптимизация маршрута — сервис, который позволяет решить задачу коммивояжёра и осуществить расчёт оптимального маршрута для набора произвольных целевых точек. Для расчёта оптимального маршрута могут быть использованы автомобильный, пешеходный и велосипедный графы.
/optimal_route
— точка вызова сервиса расчета оптимального маршрута. Для входного набора координат строит оптимизированный по времени, либо по расстоянию маршрут и формирует список координат в порядке их посещения.
Запрос
Запрос передается в виде JSON с обязательными и необязательными параметрами запроса.
Ниже представлен простой пример запрос.
{"locations":[{"lon":49.22088,"lat":55.77055},{"lon":49.21999,"lat":55.77246},{"lon":49.21933,"lat":55.77222},{"lon":49.22999,"lat":55.78246},{"lon":49.26842,"lat":55.75043}],"costing":"pedestrian","directions_options":{"units":"miles"},"id":"optimal_route_test"}
Этот запрос рассчитывает оптимальный пеший маршрут со стартом в первой точке из списка locations и финишем в последней точке.
Обязательные параметры запроса
Имя поля | Формат | Описание | Пример |
---|---|---|---|
| hex-string |
| |
| list | Список точек, которые нужно отсортировать в соответствии с порядком их посещения. Первая и последняя точка в списке таковыми и остаются, а точки между ними могут быть переставлены для оптимизации маршрута по времени. Минимальное количество точек: 2. |
|
Дополнительные параметры запроса
Имя поля | Формат | Описание | Пример |
---|---|---|---|
| string | Тип транспорта для построения маршрута. Поддерживаемые значения: • • • • |
|
| string | Идентификатор запроса, который возвращается вместе с ответом, что позволяет точно установить соответствие запроса и ответа. |
|
| dict | Список параметров расчёта маршрута. Для различных типов транспорта используются различные опции и ограничения, аналогичные тем, которые используются в сервисе построения маршрута. к сведению Дополнительно присутствует опция |
|
| string | Единица измерения расстояния в ответе: • • |
|
| bool | Флаг, указывающий на то, нужно ли фиксировать последнюю из перечисленных координат в Значение по умолчанию: |
|
Ответ
Возвращаемый ответ соответствует структуре GeoJSON и содержит следующие поля.
Имя поля | Формат | Описание | Пример |
---|---|---|---|
| string | Идентификатор запроса, который возвращается вместе с ответом, что позволяет точно установить соответствие запроса и ответа. |
|
| object map | Информация о маршруте определяется параметрами: • • • • • • • |
|
Если по запросу ничего не найдено, ответ будет выглядеть следующим образом.
js
{"status_code":400,"status":"Bad Request"}
Пример
Запрос
curl -X POST
-H "Content-type: application/json"
-H "Accept: application/json"
-d '{"locations":[{"lon":49.22088,"lat":55.77055},{"lon":49.21999,"lat":55.77246},{"lon":49.26842,"lat":55.75043}],"costing":"pedestrian","directions_options":{"units":"miles"},"id":"optimal_route_test"}'
"https://geo.rustore.ru/api/optimal_route?api_key=<YOUR_API_KEY>"
Ответ
{
"trip": {
"locations": [{
"type": "break",
"lat": 55.77055,
"lon": 49.22088,
"original_index": 0
}, {
"type": "break",
"lat": 55.77246,
"lon": 49.21999,
"original_index": 1
}, {
"type": "break",
"lat": 55.75043,
"lon": 49.26842,
"original_index": 2
}],
"legs": [{
"summary": {
"min_lat": 55.77065,
"min_lon": 49.21999,
"max_lat": 55.772514,
"max_lon": 49.220883,
"time": 188.317,
"length": 0.164,
"cost": 193.317
},
"shape": "u~jiBepe{|AMlh@gq@o@or@m@eMMAtP"
}, {
"summary": {
"min_lat": 55.750237,
"min_lon": 49.21999,
"max_lat": 55.772515,
"max_lon": 49.269982,
"time": 3543.527,
"length": 3.113,
"cost": 3644.115
},
"shape": "cuakiBmxc{|A@uPEiUHgkAF_n@BgYHghAPwvBFgr@XcrD@{ZBmGJupAG_SHwD}RNoaC@cNfAyGxHaGja@Y~JmFxKyLlBuBfUy[pI_Ux@uBfNkb@rFwTvMgx@dBkKlD}SrFs]bFa@pCgTdI{i@fC}R@aD~PklAzBwObLqw@vIuf@lLop@p@oBrJuYfNmYbAwBtJwPfCuBxIkHzMqIh_@sRfCWb@}SqAu@_GcfB_Bqh@yBmk@w@}M{D}}@qG}yAuBqZ|D_G~oCshAhQmAzWiRla@wYlbAw}@fCsFj{@ijBjWij@zZsp@fm@eqAdAgDSsn@dBqFNea@xVavAdZajBxEomA|AeeBhHiNbLcAnAuGpT|VlD~DpaBf|@vkA|q@|eBjOv@b[tPwGzDtAs@_AtGUjo@{vAvUmm@iJyL"
}],
"summary": {
"min_lat": 55.750237,
"min_lon": 49.21999,
"max_lat": 55.772515,
"max_lon": 49.269982,
"time": 3731.844,
"length": 3.278,
"cost": 3837.433
},
"status_message": "Found route between points",
"status": 0,
"units": "miles",
"language": "ru-RU"
},
"id": "optimal_route_test"
}