ルートのインポート

ルートインポートサービスは、 GPS トレースポイントおよびルーティングパラメータのサブセットを受け取る REST API です。 結果のレスポンスには、ルートのリストが含まれます。このリストを使用して、運転経路および ETA 、交通事故などのその他のパラメータの追加のマップ属性を利用できます

サポートされている使用例 :

  • HERE platform への外部ルートの取得をイネーブルにします
  • 違法な運転操作、トラックの制限、エネルギー消費を明らかにし、旅程後の分析とコストのためのルート情報を提供します。

トレースの頻度

最適な結果を得るには、 1Hz の GPS データ、またはそれらの間に数メートルの間隔を持つ任意のポイントを使用します。 ポイント数が少ないトレースの場合、 ルートインポートサービスはおおよその再計算を行おうとします。状況によっては、連続するポイントの距離が遠すぎると(オンロード距離が約 30 km を超える)、到達不能と見なされ、いずれかのポイントのマッチングに失敗することがあります。

Waypoint のサポート

  • ルートインポートサービスはWaypoint をサポートしています。 インポートされたルートには、音声ガイダンスおよび操作の指定に使用できるユーザー指定のWaypoint があります。
  • Waypoint は、トレースポイントへのインデックスによって定義され、緯度 / 経度座標はありません。
  • トレースポイントを参照するWaypoint が一致しない場合、このWaypoint は、ルートのレスポンスに従って、次に一致したトレースポイントに参照されます。
  • 結果のルートがすべてのトレースポイントと一致しない場合は、スプリットルートがルートのレスポンスに追加されていることに注意してください。
  • ルートインポートサービスは、ルートの形状に影響を与える属性をサポートしていませ んが、stopDurationをサポートしています。

制限事項

  1. リクエストで受け入れられた GPS トレースポイントの最小数は 2 で、最大数は 50000 です。
  2. POST ボディ サイズの上限は 10MiB です。
  3. トレースポイントのマッチングでは、ルートインポートサービスは車両のセグメントが閉じているとは見なしません。
  4. ルートインポートサービスは、徒歩、自転車、スクーターのTransport Modeではサポートされていません。

サンプルリクエスト :

  1. ドライブ不可能なリンクを持つルートのインポートリクエストは、分割されたセクションになります。
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"
    }]
}
  1. これは、無効な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": []
}
  1. このリクエストは、自動車、トラック、スクーター、バス、タクシーなど、自動車関連の制限事項の取り扱いを示しています。

ルートインポートサービスでは、電動車両にリクエストされた場合、「制限のソフトな処理」を行うことができます。

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"
                    }
                }
            ]
        }
    ]
}
  1. このリクエストは、徒歩および自転車モードの制限の処理を示します。

徒歩および自転車モードでは、ルートのインポートがリクエストされ、このモードで一部のセグメントが許可されていない場合、計算ではルートシェイプが無視され、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": []
}
  1. このリクエストは、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"
            }
        }]
    }]
}

」に一致する結果は 件です

    」に一致する結果はありません