В этой статье рассказывается, как создавать маршруты и добавлять настраиваемые атрибуты с помощью Roads Selection API.
- Создание маршрута. Определение одного маршрута с помощью конечной точки
create. - Пакетное создание маршрутов. Вы можете определить несколько маршрутов в одном запросе, используя конечную точку
batchCreate. - Создание маршрута с промежуточными путевыми точками. Вы можете задать маршрут, содержащий до 25 промежуточных путевых точек.
- Используйте настраиваемые атрибуты маршрутов. Для удобства организации вы можете добавить к маршрутам до 10 настраиваемых пар "ключ-значение".
Создание маршрута
Чтобы создать маршрут, отправьте запрос POST к конечной точке create.
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID
Тело запроса должно быть объектом JSON, который определяет ресурс SelectedRoute. Этот объект содержит следующую информацию:
- Объект
dynamicRouteсо следующей информацией:originвыбранного маршрута.destinationвыбранного маршрута.- Любые
intermediates(путевые точки) маршрута.
- Уникальный идентификатор
selectedRouteId. Значение должно содержать от 4 до 63 символов. Допустимые символы:a-z,A-Z,0-9,-или_. Если идентификатор не указан, система генерирует уникальный идентификатор для выбранного маршрута.
В примере кода ниже показана структура запроса POST к конечной точке create.
curl -X POST -d '
{
"dynamicRoute": {
"origin": {
"latitude": ORIGIN_LATITUDE,
"longitude": ORIGIN_LONGITUDE
},
"destination": {
"latitude": DESTINATION_LATITUDE,
"longitude": DESTINATION_LONGITUDE
}
}
}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer ACCESS_TOKEN" \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"В случае успеха API возвращает ресурс SelectedRoute. Ответ содержит selectedRouteId в поле name. Вы можете использовать этот selectedRouteId, чтобы получить или удалить ресурс SelectedRoute.
В примере кода ниже показана структура успешного ответа конечной точки create.
{
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID",
"dynamicRoute": {
"origin": {
"latitude": ORIGIN_LATITUDE,
"longitude": ORIGIN_LONGITUDE
},
"destination": {
"latitude": DESTINATION_LATITUDE,
"longitude": DESTINATION_LONGITUDE
}
},
"createTime": "CREATE_TIME",
"state": "STATE_VALIDATING"
}
Как создать маршрут с промежуточными путевыми точками
Чтобы создать маршрут, проходящий через определенные точки между пунктом отправления и пунктом назначения, включите массив intermediates в объект dynamicRoute в теле запроса. Каждый элемент в массиве intermediates – это путевая точка, заданная значениями latitude и longitude. Маршрут может содержать до 25 путевых точек.
В следующем примере кода показано, как создать объект SelectedRoute с промежуточными путевыми точками.
curl -X POST -d '
{
"dynamicRoute": {
"origin": {
"latitude": ORIGIN_LATITUDE,
"longitude": ORIGIN_LONGITUDE
},
"intermediates": [
{"latitude": INTERMEDIATE_LATITUDE_1, "longitude": INTERMEDIATE_LONGITUDE_1},
{"latitude": INTERMEDIATE_LATITUDE_2, "longitude": INTERMEDIATE_LONGITUDE_2},
{"latitude": INTERMEDIATE_LATITUDE_3, "longitude": INTERMEDIATE_LONGITUDE_3}
],
"destination": {
"latitude": DESTINATION_LATITUDE,
"longitude": DESTINATION_LONGITUDE
}
}
}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer ACCESS_TOKEN" \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"Используйте настраиваемые атрибуты маршрутов
Чтобы улучшить управление маршрутами и анализ данных в Roads Management Insights, объект SelectedRoute включает поле routeAttributes.
Используйте поле routeAttributes, чтобы задать собственные дополнительные параметры для отдельных маршрутов. Каждый атрибут представляет собой пару "ключ-значение". Для каждого маршрута можно указать до 25 пар "ключ-значение".
Эти атрибуты полезны для идентификации конкретных маршрутов или для группировки маршрутов на основе критериев, соответствующих вашим потребностям.
Ниже приведены примеры атрибутов маршрута, которые можно использовать.
"road_classification": "highway""maintenance_zone": "north_district""event_id": "marathon_2024""pavement_type": "asphalt"
При заполнении поля routeAttributes следуйте приведенным ниже рекомендациям.
- Ключи не должны начинаться с префикса
goog. - Длина каждого ключа и значения не должна превышать 100 символов.
Затем вы можете использовать эти пользовательские routeAttributes в данных для управления дорогами следующими способами:
- Фильтрация уведомлений издатель-подписчик. Вы можете настроить фильтры для подписок издатель-подписчик, чтобы получать обновления только для маршрутов, которые соответствуют или не соответствуют определенным ключам атрибутов и их значениям.
- Уточнение анализа BigQuery. В таблицах BigQuery вы можете использовать эти атрибуты для фильтрации определенных маршрутов на основе значения атрибута. Вы также можете сгруппировать маршруты по определенному ключу атрибута для более целенаправленного анализа данных.
В следующем примере кода показано, как создать SelectedRoute с настраиваемым routeAttributes.
curl -X POST -d '
{
"dynamicRoute": {
"origin": {
"latitude": ORIGIN_LATITUDE,
"longitude": ORIGIN_LONGITUDE
},
"destination": {
"latitude": DESTINATION_LATITUDE,
"longitude": DESTINATION_LONGITUDE
}
},
"routeAttributes": {
"ATTRIBUTE_KEY": "ATTRIBUTE_VALUE"
}
}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer ACCESS_TOKEN" \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes?selectedRouteId=SELECTED_ROUTE_ID"Создать маршруты
Чтобы создать несколько маршрутов в одном запросе, используйте конечную точку batchCreate. Эта конечная точка позволяет определить до 1000 маршрутов за один вызов.
Отправьте запрос POST конечной точке batchCreate:
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchCreate
URL имеет синтаксис gRPC Transcoding.
Тело запроса должно быть объектом JSON, содержащим массив requests.
Каждый объект в этом массиве представляет собой CreateSelectedRouteRequest, определяющий отдельный ресурс SelectedRoute.
В приведенном ниже примере кода показана структура запроса POST к конечной точке batchCreate.
curl -X POST -d '
{
"requests": [
{
"selectedRoute": {
"dynamicRoute": {
"origin": {
"latitude": ORIGIN_LATITUDE_1,
"longitude": ORIGIN_LONGITUDE_1
},
"destination": {
"latitude": DESTINATION_LATITUDE_1,
"longitude": DESTINATION_LONGITUDE_1
}
}
},
"selectedRouteId": "route-one"
},
{
"selectedRoute": {
"dynamicRoute": {
"origin": {
"latitude": ORIGIN_LATITUDE_2,
"longitude": ORIGIN_LONGITUDE_2
},
"destination": {
"latitude": DESTINATION_LATITUDE_2,
"longitude": DESTINATION_LONGITUDE_2
}
}
},
"selectedRouteId": "route-two"
}
]
}' \
-H 'X-Goog-User-Project: PROJECT_NUMBER' \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer ACCESS_TOKEN" \
"https://roads.googleapis.com/selection/v1/projects/"\
"PROJECT_NUMBER/selectedRoutes:batchCreate"В случае успеха API возвращает ответ, содержащий массив созданных ресурсов SelectedRoute.
В приведенном ниже примере кода показана структура ответа конечной точки batchCreate:
{
"selectedRoutes": [
{
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1",
"dynamicRoute": {
"origin": {
"latitude": ORIGIN_LATITUDE_1,
"longitude": ORIGIN_LONGITUDE_1
},
"destination": {
"latitude": DESTINATION_LATITUDE_1,
"longitude": DESTINATION_LONGITUDE_1
}
},
"createTime": "CREATE_TIME_1",
"state": "STATE_VALIDATING"
},
{
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2",
"dynamicRoute": {
"origin": {
"latitude": ORIGIN_LATITUDE_2,
"longitude": ORIGIN_LONGITUDE_2
},
"destination": {
"latitude": DESTINATION_LATITUDE_2,
"longitude": DESTINATION_LONGITUDE_2
}
},
"intermediates": [],
"createTime": "CREATE_TIME_2",
"state": "STATE_VALIDATING"
}
]
}