このページでは、Roads Selection API を使用して、すでに作成したルートを更新する方法について説明します。
- ルートを更新する:
patchエンドポイントを使用して、単一のルートの詳細を更新します。 - ルートのバッチ アップデート:
batchUpdateエンドポイントを使用して、1 回のリクエストで複数のルートの詳細を更新します。
ルートの更新
ルートを更新するには、patch エンドポイントに PATCH リクエストを送信します。
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes/SELECTED_ROUTE_ID?updateMask=UPDATE_MASK
リクエストの本文は、更新する SelectedRoute のフィールドを含む JSON オブジェクトにする必要があります。更新可能なフィールドには、displayName、routeAttributes、dynamicRoute があります。ルートのジオメトリ(dynamicRoute)を更新する場合は、dynamicRoute オブジェクト全体(出発地、目的地、中間経由地)を指定する必要があります。サブフィールドの部分更新はサポートされていません。name、createTime、state などの読み取り専用のシステム フィールドは変更できません。BigQuery の履歴データは、同じ selectedRouteId で古いジオメトリと更新されたジオメトリのデータを保持します。個別の履歴データが必要な場合は、更新を実行するのではなく、新しいルートを作成します。
ルートのジオメトリ(dynamicRoute)を更新するには、再検証が必要です。ルートが STATE_RUNNING または STATE_INVALID の場合、ジオメトリの更新は許可されます。ルートが STATE_VALIDATING または STATE_DELETING の場合、ジオメトリの更新は拒否されます。詳細については、検証とルートの状態をご覧ください。displayName や routeAttributes などのメタデータの更新は、STATE_DELETING 以外のすべての状態で行うことができます。
次のコードサンプルは、patch エンドポイントに対する 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"成功すると、API は更新された 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" }
ルートをバッチ アップデートする
1 回のリクエストで複数のルートを更新するには、batchUpdate エンドポイントを使用します。このエンドポイントを使用すると、1 回の呼び出しで最大 1,000 件のルートを更新できます。バッチ更新はアトミックです。リクエスト内のいずれかのルートの検証に失敗した場合や、更新できない場合は、バッチ内のどのルートも変更されません。
batchUpdate エンドポイントに POST リクエストを送信します。
https://roads.googleapis.com/selection/v1/projects/PROJECT_NUMBER/selectedRoutes:batchUpdate
リクエストの本文は、requests 配列を含む JSON オブジェクトである必要があります。この配列内の各オブジェクトは、ルート name、省略可能なアイテムレベルの updateMask、更新する selectedRoute フィールドを指定する UpdateSelectedRouteRequest です。
updateMask は、更新するフィールドのリスト(displayName、routeAttributes、または dynamicRoute オブジェクト全体)を指定する省略可能なパラメータです。updateMask=* を設定すると、完全な交換が示されます。updateMask は、requests の各アイテム内で指定することも、バッチ リクエストの本文の最上位に移動して、バッチ内の更新されたすべてのルートに適用することもできます。updateMask を省略すると、リクエストで入力されたすべての更新可能なフィールドが更新されると見なされます。updateMask がバッチレベルとアイテムレベルの両方で設定されている場合は、一致している必要があります。競合するマスクを指定すると、INVALID_ARGUMENT エラーが発生します。
次のコードサンプルは、batchUpdate エンドポイントに対する POST リクエストの構造を示しています。
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"成功すると、API は更新された SelectedRoute リソースの配列を含むレスポンスを返します。
{ "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" } ] }