이 페이지에서는 Roads Selection API를 사용하여 이미 만든 경로를 업데이트하는 방법을 설명합니다.
- 경로 업데이트:
patch엔드포인트를 사용하여 단일 경로의 세부정보를 업데이트합니다. - 경로 일괄 업데이트: 단일 요청으로 여러 경로의 세부정보를 업데이트합니다.
batchUpdate엔드포인트를 사용합니다.
경로 업데이트
경로를 업데이트하려면 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" }
경로 일괄 업데이트
단일 요청으로 여러 경로를 업데이트하려면 batchUpdate
엔드포인트를 사용합니다. 이 엔드포인트를 사용하면 한 번의 호출로 최대 1,000개의 경로를 업데이트할 수 있습니다. 일괄 업데이트는 원자적입니다. 요청의 경로가 유효성 검사에 실패하거나 업데이트할 수 없는 경우 일괄 처리의 경로가 수정되지 않습니다.
POST 요청을 batchUpdate 엔드포인트로 전송합니다.
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 오류가 발생합니다.
다음 코드 샘플은 POST 요청의 구조를
batchUpdate 엔드포인트에 보여줍니다.
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" } ] }