ルートのインポート
ルートインポートサービスは、 GPS トレースポイントおよびルーティングパラメータのサブセットを受け取る REST API です。 結果のレスポンスには、ルートのリストが含まれます。このリストを使用して、運転経路および ETA 、交通事故などのその他のパラメータの追加のマップ属性を利用できます
サポートされている使用例 :
- HERE platform への外部ルートの取得をイネーブルにします
- 違法な運転操作、トラックの制限、エネルギー消費を明らかにし、旅程後の分析とコストのためのルート情報を提供します。
トレースの頻度
最適な結果を得るには、 1Hz の GPS データ、またはそれらの間に数メートルの間隔を持つ任意のポイントを使用します。 ポイント数が少ないトレースの場合、 ルートインポートサービスはおおよその再計算を行おうとします。状況によっては、連続するポイントの距離が遠すぎると(オンロード距離が約 30 km を超える)、到達不能と見なされ、いずれかのポイントのマッチングに失敗することがあります。
Waypoint のサポート
- ルートインポートサービスはWaypoint をサポートしています。 インポートされたルートには、音声ガイダンスおよび操作の指定に使用できるユーザー指定のWaypoint があります。
- Waypoint は、トレースポイントへのインデックスによって定義され、緯度 / 経度座標はありません。
- トレースポイントを参照するWaypoint が一致しない場合、このWaypoint は、ルートのレスポンスに従って、次に一致したトレースポイントに参照されます。
- 結果のルートがすべてのトレースポイントと一致しない場合は、スプリットルートがルートのレスポンスに追加されていることに注意してください。
- ルートインポートサービスは、ルートの形状に影響を与える属性をサポートしていませ んが、
stopDuration
をサポートしています。
制限事項
- リクエストで受け入れられた GPS トレースポイントの最小数は 2 で、最大数は 50000 です。
- POST ボディ サイズの上限は 10MiB です。
- トレースポイントのマッチングでは、ルートインポートサービスは車両のセグメントが閉じているとは見なしません。
- ルートインポートサービスは、徒歩、自転車、スクーターのTransport Modeではサポートされていません。
サンプルリクエスト :
- ドライブ不可能なリンクを持つルートのインポートリクエストは、分割されたセクションになります。
curl -X POST \
'https://router.hereapi.com/v8/import?apikey={YOUR_API_KEY}&return=polyline,summary,actions,instructions,routeHandle&transportMode=car'
{
"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": [{
"id": "9b234180-79e7-4fc3-8b18-7b64ec8cf311",
"type": "vehicle",
"actions": [{
"action": "depart",
"duration": 14,
"length": 175,
"instruction": "Head west on Heckerdamm. Go for 175 m.",
"offset": 0
}, {
"action": "arrive",
"duration": 0,
"length": 0,
"instruction": "Arrive at Heckerdamm.",
"offset": 5
}],
"departure": {
"time": "2022-01-11T15:33:26+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.5411052,
"lng": 13.2789851
},
"originalLocation": {
"lat": 52.5411052,
"lng": 13.2789853
}
}
},
"arrival": {
"time": "2022-01-11T15:33:40+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.5413639,
"lng": 13.2764439
},
"originalLocation": {
"lat": 52.5413639,
"lng": 13.2764439
},
"waypoint": 0
}
},
"summary": {
"duration": 14,
"length": 175,
"baseDuration": 12
},
"polyline": "BGir7mkDywvqZ-FhlC8BvR8BjSsEvlBkCzQ",
"language": "en-us",
"transport": {
"mode": "car"
}
}, {
"id": "3d706e13-7e3a-46f8-ac7b-0398e6921911",
"type": "vehicle",
"actions": [{
"action": "depart",
"duration": 12,
"length": 165,
"instruction": "Head east on Saatwinkler Damm. Go for 165 m.",
"offset": 0
}, {
"action": "arrive",
"duration": 0,
"length": 0,
"instruction": "Arrive at Saatwinkler Damm.",
"offset": 2
}],
"departure": {
"time": "2022-01-11T15:33:40+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.5485417,
"lng": 13.2763053
},
"originalLocation": {
"lat": 52.5413639,
"lng": 13.2764439
},
"waypoint": 0
}
},
"arrival": {
"time": "2022-01-11T15:33:52+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.5484908,
"lng": 13.2787278
},
"originalLocation": {
"lat": 52.5484909,
"lng": 13.2787278
}
}
},
"summary": {
"duration": 12,
"length": 165,
"baseDuration": 12
},
"polyline": "BG87pnkDipqqZ_Bq1ClBkiC",
"language": "en-us",
"transport": {
"mode": "car"
}
}],
"routeHandle": "AJYA5gcAAAcAAAAOAAAADAAAANwAAAB42mO4w8DAyMzAwMCekVqUapWce-DJVw4gl8Fdkqefa1JsYeevCzGp_UD6J5BmwAJgGndd2aMH4u87wJfOtPZBQWeXdlyq4vOCTo67-DWyc8wD28h1M0GPa2JgYaeOZlwqiNYG0sRofDtfJnsN1EJGsIqp55iWMIEYAMWzNTl1MN7O"
}]
}
- これは、無効なTransport Modeのルートのインポートリクエストです
curl -X POST \
'https://router.hereapi.com/v8/import?apikey={YOUR_API_KEY}&return=polyline,summary,actions,instructions&transportMode=pedestrian'
{
"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
}
]
}
指定されたTransport Modeが指定されたトレースに有効ではないため、結果のレスポンスでエラーが返されます。
{
"notices": [{
"title": "Route handle decoding failed due to forbidden segments for the specified transport mode.",
"code": "violatedTransportModeInRouteHandleDecoding",
"severity": "critical"
}],
"routes": []
}
- このリクエストは、自動車、トラック、スクーター、バス、タクシーなど、自動車関連の制限事項の取り扱いを示しています。
ルートインポートサービスでは、電動車両にリクエストされた場合、「制限のソフトな処理」を行うことができます。
curl -X POST \
'https://router.hereapi.com/v8/import?apikey={YOUR_API_KEY}&return=polyline,summary,actions,instructions&transportMode=truck'
{"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": [
{
"id": "fd82ca53-9dca-4948-83bc-d33e808bb0b8",
"type": "vehicle",
"actions": [
{
"action": "depart",
"duration": 363,
"length": 1303,
"instruction": "Head toward Am Postfenn on Havelchaussee. Go for 1.3 km.",
"offset": 0
},
{
"action": "arrive",
"duration": 0,
"length": 0,
"instruction": "Arrive at Havelchaussee.",
"offset": 34
}
],
"departure": {
"time": "2022-01-21T15:09:15+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.5033216,
"lng": 13.2118512
},
"originalLocation": {
"lat": 52.5033216,
"lng": 13.2118512
}
}
},
"arrival": {
"time": "2022-01-21T15:15:18+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.4948452,
"lng": 13.2000128
},
"originalLocation": {
"lat": 52.4948452,
"lng": 13.2000128
}
}
},
"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"
}
}
]
}
]
}
- このリクエストは、徒歩および自転車モードの制限の処理を示します。
徒歩および自転車モードでは、ルートのインポートがリクエストされ、このモードで一部のセグメントが許可されていない場合、計算ではルートシェイプが無視され、Transport Mode違反を説明するエラーメッセージが返されます。
curl -X POST \
'https://router.hereapi.com/v8/import?apikey={YOUR_API_KEY}&return=polyline,summary,actions,instructions&transportMode=pedestrian'
{
"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": []
}
- このリクエストは、Waypoint のサポートを示します
トレースポイントにインデックスを設定して、Waypint を定義します。 結果として、ルートが複数のセクションに分割されます。
curl -X POST \
'https://router.hereapi.com/v8/import?apikey={YOUR_API_KEY}&return=polyline,summary,actions,instructions&transportMode=car'
{
"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": [{
"id": "0efce733-a4aa-4694-8a08-ae72c1e179b7",
"type": "vehicle",
"actions": [{
"action": "depart",
"duration": 14,
"length": 101,
"instruction": "Head northeast on Perleberger Straße. Go for 101 m.",
"offset": 0
}, {
"action": "arrive",
"duration": 0,
"length": 0,
"instruction": "Arrive at Perleberger Straße.",
"offset": 2
}],
"postActions": [{
"action": "wait",
"duration": 3600
}],
"departure": {
"time": "2022-01-11T15:13:32+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.5333084,
"lng": 13.352164
},
"originalLocation": {
"lat": 52.5333084,
"lng": 13.352164
}
}
},
"arrival": {
"time": "2022-01-11T15:13:46+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.5338836,
"lng": 13.3533071
},
"originalLocation": {
"lat": 52.5338836,
"lng": 13.3533072
},
"waypoint": 0
}
},
"summary": {
"duration": 3614,
"length": 101,
"baseDuration": 8
},
"polyline": "BG4jsmkDou-uZwTwmBwQ-gB",
"language": "en-us",
"transport": {
"mode": "car"
}
}, {
"id": "5a1206a2-c811-49bf-ac4e-0fe4227932d3",
"type": "vehicle",
"actions": [{
"action": "depart",
"duration": 13,
"length": 102,
"instruction": "Head northeast on Perleberger Straße. Go for 102 m.",
"offset": 0
}, {
"action": "arrive",
"duration": 0,
"length": 0,
"instruction": "Arrive at Perleberger Straße.",
"offset": 2
}],
"departure": {
"time": "2022-01-11T16:13:46+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.5338836,
"lng": 13.3533071
},
"originalLocation": {
"lat": 52.5338836,
"lng": 13.3533072
},
"waypoint": 0
}
},
"arrival": {
"time": "2022-01-11T16:13:59+01:00",
"place": {
"type": "place",
"location": {
"lat": 52.5344651,
"lng": 13.3544702
},
"originalLocation": {
"lat": 52.5344651,
"lng": 13.3544703
}
}
},
"summary": {
"duration": 13,
"length": 102,
"baseDuration": 9
},
"polyline": "BG4ntmkD21gvZ0aq1B2JsT",
"language": "en-us",
"transport": {
"mode": "car"
}
}]
}]
}