Cette page explique comment mettre à jour les routes que vous avez déjà créées à l'aide de l'API Roads Selection :
- Mettre à jour une route : mettez à jour les détails d’une seule route à l’aide du
patchpoint de terminaison. - Mise à jour groupée des routes : mettez à jour les détails de plusieurs routes dans une seule
requête à l'aide du point de terminaison
batchUpdate.
Mettre à jour une route
Pour mettre à jour une route, envoyez une PATCH requête au patch point de terminaison :
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
Le corps de la requête doit être un objet JSON contenant les champs du
SelectedRoute à mettre à jour. Les champs pouvant être mis à jour incluent displayName,
routeAttributes et dynamicRoute. Lorsque vous mettez à jour la géométrie de la route (dynamicRoute), vous devez fournir l'objet dynamicRoute complet (origine, destination et points de repère intermédiaires). Les mises à jour partielles des sous-champs ne sont pas acceptées. Les champs système en lecture seule tels que name, createTime et state ne peuvent pas être modifiés. Les données historiques dans BigQuery conserveront les données de l'ancienne géométrie et de la géométrie mise à jour sous le même selectedRouteId. Si vous avez besoin de données historiques distinctes, créez une route plutôt que d'en mettre une à jour.
La mise à jour de la géométrie d'une route (dynamicRoute) nécessite sa revalidation.
Les mises à jour de la géométrie sont autorisées lorsque la route est dans l'état STATE_RUNNING ou STATE_INVALID, et sont refusées si la route est dans l'état STATE_VALIDATING ou STATE_DELETING. Pour en savoir plus, consultez la section Validation et états des routes.
La mise à jour des métadonnées telles que displayName ou routeAttributes est autorisée dans tous les états, à l'exception de STATE_DELETING.
L'exemple de code suivant montre la structure d'une requête PATCH au point de terminaison
patch :
curl -X PATCH -d '{
"dynamicRoute": {
"origin": {
"latitude": 38.5817,
"longitude": -121.4944
},
"destination": {
"latitude": 38.5449,
"longitude": -121.7405
}
}
}' \
-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/"\
"SELECTED_ROUTE_ID?updateMask=dynamicRoute"En cas de réussite, l'API renvoie la ressource mise à jour SelectedRoute :
{ "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID", "dynamicRoute": { "origin": { "latitude": 38.5817, "longitude": -121.4944 }, "destination": { "latitude": 38.5449, "longitude": -121.7405 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING" }
Mise à jour groupée des routes
Pour mettre à jour plusieurs routes dans une seule requête, utilisez le batchUpdate
point de terminaison. Ce point de terminaison vous permet de mettre à jour jusqu'à 1 000 routes en un seul appel. Les mises à jour par lot sont atomiques : si une route de la requête échoue à la validation ou ne peut pas être mise à jour, aucune route du lot n'est modifiée.
Envoyez une requête POST au point de terminaison batchUpdate :
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
Le corps de la requête doit être un objet JSON contenant un tableau requests.
Chaque objet de ce tableau est un UpdateSelectedRouteRequest qui spécifie le name de la route, un updateMask facultatif au niveau de l'élément et les champs selectedRoute à mettre à jour.
Un updateMask est un paramètre facultatif qui spécifie la liste des champs à
mettre à jour (displayName, routeAttributes ou l'objet dynamicRoute
entier). Définir updateMask=* indique un remplacement complet. Un updateMask peut être spécifié dans chaque élément individuel de requests, ou déplacé au niveau supérieur du corps de la requête par lot pour s'appliquer à toutes les routes mises à jour du lot.
Si updateMask est omis, tous les champs pouvant être mis à jour et renseignés dans la requête sont considérés comme mis à jour. Si un updateMask est défini à la fois au niveau du lot et au niveau d'un élément, ils doivent correspondre. La spécification de masques conflictuels entraîne une erreur INVALID_ARGUMENT.
L'exemple de code suivant montre la structure d'une requête POST au
batchUpdate point de terminaison :
curl -X POST -d '{
"requests": [
{
"selectedRoute": {
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1",
"displayName": "DISPLAY_NAME_1",
"dynamicRoute": {
"origin": {"latitude": 37.5, "longitude": -122.1},
"destination": {"latitude": 37.8, "longitude": -122.5}
}
},
"updateMask": "displayName,dynamicRoute"
},
{
"selectedRoute": {
"name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2",
"displayName": "DISPLAY_NAME_2",
"dynamicRoute": {
"origin": {"latitude": 37.5, "longitude": -122.1},
"destination": {"latitude": 37.8, "longitude": -122.5}
}
},
"updateMask": "displayName,dynamicRoute"
}
]}' \
-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:batchUpdate"En cas de réussite, l'API renvoie une réponse contenant un tableau des
SelectedRoute ressources qui ont été mises à jour :
{ "selectedRoutes": [ { "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_1", "displayName": "DISPLAY_NAME_1", "dynamicRoute": { "origin": { "latitude": 37.5, "longitude": -122.1 }, "destination": { "latitude": 37.8, "longitude": -122.5 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING" }, { "name": "projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID_2", "displayName": "DISPLAY_NAME_2", "dynamicRoute": { "origin": { "latitude": 37.5, "longitude": -122.1 }, "destination": { "latitude": 37.8, "longitude": -122.5 } }, "createTime": "2026-08-14T20:58:41.345418Z", "state": "STATE_VALIDATING" } ] }