/api/dm — точка вызова сервиса расчёта матрицы расстояний.
Сервис позволяет осуществлять расчёт ETA и расстояния для пар пунктов отправления и назначения, определяющих матрицу. Поддерживаются матрицы различной размерности:
Запрос передаётся методом HTTP POST. В теле запроса указывается JSON с обязательными и необязательными полями.
Простой пример JSON запроса:
{
"sources": [
{"lat": 55.796932, "lon": 37.537849},
{"lat": 55.801551, "lon": 37.531575}
],
"targets": [
{"lat": 55.790412, "lon": 37.534313},
{"lat": 55.788644, "lon": 37.536507}
],
"costing": "pedestrian",
"id": "DM_Test"
}
Этот запрос рассчитывает матрицу времени и расстояния для пешеходного графа для каждой пары точек отправления и назначения.
| Имя параметра | Формат | Описание | Пример |
|---|---|---|---|
api_key |
hex-string | Ключ доступа к сервисам | fa749bace6d8a3b1.... |
| Имя поля | Формат | Описание | Пример |
|---|---|---|---|
sources |
list | Список точек отправления, где lat и lon — широта и долгота точки в градусах (6 знаков после запятой) |
[{"lat": 55.796932, "lon": 37.537849}, ...] |
targets |
list | Список точек назначения, где lat и lon — широта и долгота точки в градусах (6 знаков после запятой) |
[{"lat": 55.790412, "lon": 37.534313}, ...] |
Максимальное суммарное число точек отправления (
sources) и назначения (targets) не должно превышать 50 точек.
| Имя поля | Формат | Описание | Пример |
|---|---|---|---|
costing |
string | Тип транспорта для построения маршрута: auto (по умолчанию) — автомобильный; truck (не поддерживается) — грузовой; pedestrian — пешеходный; bicycle — велосипедный. |
"costing": "pedestrian" |
id |
string | Идентификатор запроса, который возвращается вместе с ответом — позволяет точно установить соответствие запроса и ответа | "id": "DM_Test" |
costing_options |
dict | Параметры расчёта маршрута. Для различных типов транспорта используются различные опции и ограничения, аналогичные тем, которые используются в сервисе Построение маршрута. | {"use_border_crossing": 0, "use_tolls": 0} |
units |
string | Единица измерения расстояния в ответе: kilometers (по умолчанию) — километры; miles — мили. |
"units": "miles" |
| Имя поля | Формат | Описание | Пример |
|---|---|---|---|
id |
string | Идентификатор запроса | "id": "DM_Test" |
sources |
list | Список со вложенным списком точек отправления, где lat и lon — широта и долгота точки в градусах (6 знаков после запятой) |
|
targets |
list | Список со вложенным списком точек назначения, где lat и lon — широта и долгота точки в градусах (6 знаков после запятой) |
|
sources_to_targets |
list | Рассчитанная матрица, содержащая номера элементов матрицы отправления и назначения для каждого результата расчёта, а также расчётные значения ETA и EDA | |
distance |
float | Общая длина маршрута в выбранных единицах измерения (EDA). Если маршрут не может быть построен — null. |
"distance": 1.828 |
time |
float | Расчётное время движения по маршруту в секундах (ETA). Если маршрут не может быть построен — null. |
"time": 1311 |
to_index |
integer | Порядковый номер элемента матрицы назначения в запросе | "to_index": 0 |
from_index |
integer | Порядковый номер элемента матрицы отправления в запросе | "from_index": 0 |
units |
string | Единица измерения расстояния в ответе | "units": "kilometers" |
При отсутствии результата сервис вернёт:
{"status_code": 400, "status": "Bad Request"}
curl -X POST \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-d '{
"sources": [
{"lat": 55.796932, "lon": 37.537849},
{"lat": 55.801551, "lon": 37.531575}
],
"targets": [
{"lat": 55.790412, "lon": 37.534313},
{"lat": 55.788644, "lon": 37.536507}
],
"costing": "pedestrian",
"id": "DM_Test"
}' \
"/api/dm"
{
"id": "DM_Test",
"targets": [
[
{"lon": 37.534313, "lat": 55.790413},
{"lon": 37.536507, "lat": 55.788643}
]
],
"sources_to_targets": [
[
{"distance": 1.076, "time": 773, "to_index": 0, "from_index": 0},
{"distance": 1.459, "time": 1041, "to_index": 1, "from_index": 0}
],
[
{"distance": 1.828, "time": 1311, "to_index": 0, "from_index": 1},
{"distance": 2.211, "time": 1579, "to_index": 1, "from_index": 1}
]
],
"sources": [
[
{"lon": 37.537849, "lat": 55.796932},
{"lon": 37.531574, "lat": 55.801552}
]
],
"units": "kilometers"
}
Если один из маршрутов матрицы не может быть рассчитан, соответствующие поля distance и time возвращаются как null.
curl -X POST \
-H "Content-type: application/json" \
-H "Accept: application/json" \
-d '{
"sources": [
{"lat": 54.354809, "lon": 41.548387},
{"lat": 54.222163, "lon": 41.430868}
],
"targets": [
{"lat": 54.303468, "lon": 41.426120},
{"lat": 54.114391, "lon": 40.075362}
],
"costing": "pedestrian",
"id": "DM_Test"
}' \
"/api/dm"
{
"id": "DM_Test",
"sources_to_targets": [
[
{"distance": 14.367, "time": 10443, "to_index": 0, "from_index": 0},
{"distance": null, "time": null, "to_index": 1, "from_index": 0}
],
[
{"distance": 10.979, "time": 8006, "to_index": 0, "from_index": 1},
{"distance": null, "time": null, "to_index": 1, "from_index": 1}
]
],
"units": "kilometers",
"targets": [
[
{"lon": 41.426120, "lat": 54.303468},
{"lon": 40.075362, "lat": 54.114391}
]
],
"sources": [
[
{"lon": 41.548387, "lat": 54.354809},
{"lon": 41.430868, "lat": 54.222163}
]
]
}