トレースからルートをインポートするには
ルートインポートサービスはGPSトレースポイントとルート検索パラメーターのサブセットを受け入れるREST APIです。結果として得られる応答にはルートのリストが含まれます。このリストを使用して、運転ルート上の追加の地図属性や、到達予測時刻および交通事案などのその他のパラメーターを利用できます。
サポートされるユースケース
- HEREプラットフォームに外部ルートを取り込めるようにする
- 違法な運転操作、トラック制約、エネルギー消費量を明らかにし、移動後の分析とコスト計算のためにルート情報を提供する
トレースの頻度
最良の結果を得るには、1 Hz の GPS データ、または数メートル間隔の任意のポイントを使用します。 ポイント数が少ないトレースの場合、ルート インポート サービスはおおまかな再構成を行おうとします。 状況によっては、連続するポイントの距離が遠すぎる (オンロード距離が約 30 km を超える) と到達不能と見なされ、いずれかのポイントの照合に失敗することがあります。
経由地のサポート
- ルート インポート サービスは経由地をサポートします。インポートされたルートにはユーザー指定の経由地が含まれ、これを音声ガイダンスや運転操作の指定に使用できます。
- 経由地はトレースポイントへのインデックスによって定義され、緯度/lon座標はありません。
- トレースポイントを参照する経由地と照合しない場合、この経由地は、ルートのレスポンスの対応する通知とともに、次に照合するトレースポイントを参照します。
- 結果として得られるルートがすべてのトレースポイントと照合しない場合は、分割されたルートがルートの応答に追加されることに注意してください。
- ルートインポートサービスは、ルートの形状に影響を与える属性をサポートしませんが、
stopDurationはサポートします。
制限
- リクエストで受け入れられる GPS トレース ポイントの最小数は 2 で、最大数は 50000 です。
- POSTボディのサイズ制限は10 MiBです。
- トレースポイントマッチングでは、ルートインポートサービスは自動車走行が禁止されているセグメントを考慮しません。
- ルートインポートサービスでは、分離帯のない双方向道路でのUターンが制限付きでサポートされます。トレースに車両のUターンが含まれる場合、方向の変更が識別されると、サービスはルートを複数のセクションに分割します。
- 通行料金は、ルートインポートサービスで直接利用できません。ルートインポートを使用する際に料金を取得する方法については、このチュートリアルを参照してください。
リクエストの例
- 走行不可能なリンクを使用したルートインポートリクエストでは分割されたセクションを得ることができます。
curl -gX POST 'https://router.hereapi.com/v8/import?'\
'return=polyline,summary&'\
'transportMode=car&'\
'apiKey=YOUR_API_KEY' \
-H 'Content-Type: application/json' -d '
{
"trace": [
{
"lat": 52.541121,
"lng": 13.278989
},
{
"lat": 52.541338,
"lng": 13.276435
},
{
"lat": 52.544976,
"lng": 13.276273
},
{
"lat": 52.546982,
"lng": 13.275723
},
{
"lat": 52.548535,
"lng": 13.276305
},
{
"lat": 52.548535,
"lng": 13.27873
}
]
}
'結果として得られる応答でルートが複数のセクションに分割されます。
{
"notices": [
{
"title": "Import: Provided trace could not be matched into a continuous route.\nSome trace points were unmatched.",
"code": "importSplitRoute",
"severity": "info"
}
],
"routes": [
{
"id": "5129a87e-fe4c-4a0f-bcc6-a17b4d7a3229",
"sections": [
{
...,
"summary": {
"duration": 14,
"length": 175,
"baseDuration": 12
},
"polyline": "BGir7mkDywvqZ-FhlC8BvR8BjSsEvlBkCzQ",
"language": "en-us",
"transport": {
"mode": "car"
}
},
{
...,
"summary": {
"duration": 12,
"length": 165,
"baseDuration": 12
},
"polyline": "BG87pnkDipqqZ_Bq1ClBkiC",
"language": "en-us",
"transport": {
"mode": "car"
}
}
]
}
]
}- これは無効な移動モードを使用したルートインポートリクエストです。
curl -gX POST 'https://router.hereapi.com/v8/import?'\
'return=polyline,summary&'\
'transportMode=pedestrian&'\
'apiKey=YOUR_API_KEY' \
-H 'Content-Type: application/json' -d '
{
"trace": [
{
"lat": 19.040871,
"lng": 72.81978
},
{
"lat": 19.041056,
"lng": 72.820037
},
{
"lat": 19.041229,
"lng": 72.820354
},
{
"lat": 19.041366,
"lng": 72.82063
},
{
"lat": 19.041548,
"lng": 72.821042
}
]
}
'指定した移動モードが指定したトレースに有効でないため、結果として得られる応答にエラーが返されます。
{
"notices": [
{
"title": "Route handle decoding failed due to forbidden segments for the specified transport mode.",
"code": "violatedTransportModeInRouteHandleDecoding",
"severity": "critical"
}
],
"routes": []
}- このリクエストは動力付きの車両 (乗用車、トラック、スクーター、バス、タクシー) の制限の処理を示しています。
ルート インポート サービスでは、動力付きの車のリクエスト時に「制約のソフトな処理」を行うことができます。
curl -gX POST 'https://router.hereapi.com/v8/import?'\
'return=polyline,summary&'\
'transportMode=truck&'\
'apiKey=YOUR_API_KEY' \
-H 'Content-Type: application/json' -d '
{
"trace": [
{
"lat": 52.503323,
"lng": 13.211876
},
{
"lat": 52.501416,
"lng": 13.210769
},
{
"lat": 52.500363,
"lng": 13.2089
},
{
"lat": 52.499144,
"lng": 13.206339
},
{
"lat": 52.497466,
"lng": 13.203929
},
{
"lat": 52.496107,
"lng": 13.200937
},
{
"lat": 52.495536,
"lng": 13.200078
},
{
"lat": 52.494839,
"lng": 13.199987
}
]
}
'応答には、ルートと、違反について言及するセクション レベルの重大な通知が返されます。
{
"routes": [
{
"id": "396a7129-4edc-4a85-91a1-abe62ae7092c",
"sections": [
{
...,
"summary": {
"duration": 363,
"length": 1303,
"baseDuration": 363
},
"polyline": "BG0xxkkD2ssmZjZ2DrJUrJnBjN3D3NvHrOjNjNjSjwBvyCzKvRvRnf_YrxBrnBv3CzFnLnGzK_iB_2BjDrEnG3I7GjInavgB_JvM_J3N3IrOjInQz8BnoE7G_O7GrOvMvW7aztB3DrErErE7LjI_E7BjNT5MqI",
"notices": [
{
"title": "Violated vehicle restriction.",
"code": "violatedVehicleRestriction",
"severity": "critical"
}
],
"language": "en-us",
"transport": {
"mode": "truck"
}
}
]
}
]
}- このリクエストは歩行者モードと自転車モードの制限の処理を示しています。
歩行者モードと自転車モードでは、ルートインポートがリクエストされたときに当該モードで許可されていないセグメントがある場合、ルート形状を無視した計算が行われ、移動モード違反を説明するエラーメッセージが返されます。
curl -gX POST 'https://router.hereapi.com/v8/import?'\
'return=polyline,summary&'\
'transportMode=pedestrian&'\
'apiKey=YOUR_API_KEY' \
-H 'Content-Type: application/json' -d '
{
"trace": [
{
"lat": 19.05962,
"lng": 72.846409
},
{
"lat": 19.059171,
"lng": 72.846397
},
{
"lat": 19.058749,
"lng": 72.846392
},
{
"lat": 19.058333,
"lng": 72.846392
}
]
}
'{
"notices": [
{
"title": "Route handle decoding failed due to forbidden segments for the specified transport mode.",
"code": "violatedTransportModeInRouteHandleDecoding",
"severity": "critical"
}
],
"routes": []
}- このリクエストは経由地のサポートを示しています。
トレース ポイントにインデックスを設定して経由地を定義します。結果として得られる応答でルートが複数のセクションに分割されます。
curl -gX POST 'https://router.hereapi.com/v8/import?'\
'return=polyline,summary&'\
'transportMode=car&'\
'apiKey=YOUR_API_KEY' \
-H 'Content-Type: application/json' -d '
{
"trace": [
{
"lat": 52.533318,
"lng": 13.352151
},
{
"lat": 52.533903,
"lng": 13.353281
},
{
"lat": 52.534498,
"lng": 13.354426
}
],
"via": [
{
"index": 1,
"stopDuration": 3600
}
]
}
'結果として得られる応答でルートが複数のセクションに分割されます。
{
"routes": [
{
"id": "3ff638c7-dd97-46d0-8efa-ae482b3d64ea",
"sections": [
{
...,
"postActions": [
{
"action": "wait",
"duration": 3600
}
],
...,
"summary": {
"duration": 3614,
"length": 101,
"baseDuration": 8
},
"polyline": "BG4jsmkDou-uZwTwmBwQ-gB",
"language": "en-us",
"transport": {
"mode": "car"
}
},
{
...,
"summary": {
"duration": 13,
"length": 102,
"baseDuration": 9
},
"polyline": "BG4ntmkD21gvZ0aq1B2JsT",
"language": "en-us",
"transport": {
"mode": "car"
}
}
]
}
]
}25 日前の更新