回避設定
ルートは特定のマップフィーチャーやエリアを回避するように計算できます。
エリアを回避する
領域をバウンディングボックス、ポリゴン、またはコリドーとして指定することで、地理的領域全体を回避できます。たとえば、ベルリンエリアを回避するルートは、avoid[areas]=bbox:13.082,52.416,13.628,52.626と指定すると計算できます。
エリアを回避する方法については、「ルート内のエリアを回避するには」を参照してください。
ルート検索ゾーンを回避する
ルート検索ゾーンとその回避方法の詳細については、「ルーティングゾーンの使用方法」を参照してください。
セグメントを回避する
マップの特定の場所は、回避するセグメントの識別子を指定することで回避できます。たとえば、ベルリンのInvalidenstrasseの一部である特定セグメントを回避するルートは、avoid[segments]=here:cm:segment:207551710と指定すると計算できます。
フィーチャーを回避する
マップフィーチャーは、回避するフィーチャーカテゴリーのリストを指定することで回避できます。たとえば、有料道路を回避するルートは、ルートをリクエストするときにavoid[features]=tollRoadと指定すると計算できます。
トラックのルーティングで高速道路や有料道路を回避する
非常に長いトラックルートで高速道路や有料道路を避けると、レスポンス時間が非常に長くなるか、ルートがまったく返されない可能性があります。ルート検索アルゴリズムでは通常、特に長距離運転の場合、ルートの大部分が高速道路で行われるものと想定されます。この想定から外れると、前述のような動作が発生します。これはトラックルートの場合に特に問題となります。高速道路以外の代替ルートにはトラック制限が多い場合があり、その結果、ルートが見つからないかルートを見つけるのに非常に長い計算時間がかかるおそれがあります。
さらに、多くの国では、主要道路のほとんどまたはすべてが有料道路であるため (特にトラックの場合)、「avoid toll-roads」オプションにも同様の制限があります。たとえば、transportMode=truckとavoid[features]=tollRoadsを使用してヨーロッパを横断するルートでは、多くの場合、すべての主要道路を回避する必要があり、その結果、計算できたとしても、トラックにとっては非常に長くて不便なルートになります。
季節閉鎖を回避する
季節閉鎖の詳細と回避方法については、「季節閉鎖」を参照してください。
回避リクエストの違反
avoidリクエストに違反せずにルートを計算できない場合があります。 たとえば、他の方法ではアクセスできない島にルーティングする際にavoid[features]=ferryを指定する場合です。この場合、そのフィーチャーの使用を最小限に抑えたルートが返される可能性があります。利用可能な唯一のルートがavoidリクエストに違反する場合、ルートが返されないこともあります。
または、そのフィーチャーが多くの高速/shortルートに存在するために、それを回避するルートを見つけるのが非常に困難な場合もあります。この例として、多くのトンネルがある山岳地帯を横断するルートの計算にavoid[feature]=tunnelsを使用することが考えられます。
avoidリクエストに違反するルートが返された場合、そのルートがそのフィーチャーを回避しないことを示す通知が示されます。
指定された回避オプションを回避する例
次のリクエストでは、avoidオプションを使用してtollRoadフィーチャーを正常に回避します。
curl -gX GET 'https://router.hereapi.com/v8/routes?'\
'destination=47.168076,11.861380&'\
'origin=47.257410,11.351458&'\
'transportMode=car&'\
'avoid[features]=tollRoad&'\
'apiKey=YOUR_API_KEY'指定された回避オプションに違反する例
次のリクエストは回避オプションに違反しています。
curl -gX GET 'https://router.hereapi.com/v8/routes?'\
'destination=53.863531,14.284817&'\
'origin=53.859552,14.271760&'\
'transportMode=car&'\
'avoid[features]=ferry&'\
'apiKey=YOUR_API_KEY'次の応答では、violatedAvoidFerry コードを含む notice が指定されます。
{
"routes": [
{
"id": "7616d85b-da9a-46bd-9b9f-e8dafe34213a",
"sections": [
{
...,
"transport": {
"mode": "car"
},
"type": "vehicle"
},
{
...,
"notices": [
{
"code": "violatedAvoidFerry",
"title": "Violated avoid ferry"
}
],
"transport": {
"mode": "ferry"
},
"type": "vehicle"
},
{
...,
"transport": {
"mode": "car"
},
"type": "vehicle"
}
]
}
]
}回避オプションが失敗する例
次のリクエストでは回避オプションに失敗しています。
curl -gX GET 'https://router.hereapi.com/v8/routes?'\
'origin=52.531106,13.384915&'\
'transportMode=car&'\
'destination=55.954408,-3.194735&'\
'avoid[features]=ferry,carShuttleTrain&'\
'return=summary&'\
'apiKey=YOUR_API_KEY'{
"notices": [
{
"title": "Route calculation failed: Couldn't find a route.",
"code": "noRouteFound"
}
],
"routes": []
}25 日前の更新