ルーティングセグメントの回避 ルーティングセグメントは、道路の一部、または線形でナビゲート可能な区間を表すトポロジセグメントです( 「セグメント 」を参照)。
以下では、いくつかの例を使用して、ルーティングセグメントを回避する方法について説明します。
返されたルートのセグメントを回避 指定したspan=segmentRef
を使用してルートが計算された場合、返されたルート(図 1 の青い線)にはセグメントスパンのリストが含まれます。
図 1. セグメントの回避 次のコマンドを使用して、指定した起点と終点の間のセグメントスパンのリストを計算できます。
curl -X GET \
'https://router.hereapi.com/v8/routes?origin=45.484661,9.228382&destination=45.485542,9.234576&return=polyline&spans=segmentRef&transportMode=car&apikey={YOUR_API_KEY}'
次のセグメントスパンのリストを返します。
{
"routes" : [
{
"sections" : [
{
"type" : "vehicle" ,
"departure" : { } ,
"arrival" : { } ,
"polyline" : "BG8vl42CwvqzR8D4X0FgoB8Lk1B0FwbqEoR" ,
"refReplacements" : {
"0" : "hrn:here:data::olp-here:rib-2:3217:" ,
"1" : "here:cm:segment"
} ,
"spans" : [
{
"offset" : 0 ,
"segmentRef" : "$0:377570872:$1:76764732#+0.6376674544619554..1"
} ,
{
"offset" : 1 ,
"segmentRef" : "$0:377570872:$1:89214839#+0..1"
} ,
{
"offset" : 2 ,
"segmentRef" : "$0:377570872:$1:95058600#+0..1"
} ,
{
"offset" : 3 ,
"segmentRef" : "$0:377570872:$1:82740696#+0..1"
} ,
{
"offset" : 4 ,
"segmentRef" : "$0:377570872:$1:96835127#+0..0.626940133196055"
}
] ,
"transport" : {
"mode" : "car"
}
}
]
}
]
}
オフセット 2 のセグメントには、segmentId と方向が $1:95058600#+
として指定されており、これは refReplacement
パラメーターを使用してhere:cm:segment:95058600#+
に変換されますこのセグメントを両方向で回避する必要がある場合、ルートリクエストには方向パートを含まない avoid[segments]=here:cm:segment:95058600
を含める必要があります。
注 : refReplacement
を使用した完全な HERE リソースネーム の構築の詳細について は、 Referencing HERE Map Content entities ページを参照してください。
curl -X GET \
'https://router.hereapi.com/v8/routes?origin=45.484785,9.229564&destination=45.485299,9.232146&avoid[segments]=here:cm:segment:95058600&return=polyline&spans=segmentRef&transportMode=car&departureTime=any&apikey={YOUR_API_KEY}'
回避策を指定して返されたルート ( 図 1 の紫色の線 ) は、回避されたセグメントを中心に移動します。
ヒント : 1 つ以上のセグメントにまたがる小さなルートを計算すると、ルートの一部である場合に、これらのセグメントの ID とその方向を学習できます。
マップの特定の方向へのセグメントの配置の回避 東から西へなど、特定の道路を特定の方向に移動しないようにする場合を想定します ( 図 2 を参照 ) 。
図 2. ルート方向のセグメントの回避 このセグメントをマップから取得すると ( セグメントを参照 ) 、ユーザーはセグメント ID 、ジオメトリ、開始ノード、終了ノードを取得します。
{
"identifier" : "here:cm:segment:95058600" ,
"geometry" : [
{
"latitude" : 45.48495 ,
"longitude" : 9.23058 ,
"z_level" : 0 ,
"elevation" : 0
} ,
{
"latitude" : 45.48514 ,
"longitude" : 9.23143 ,
"z_level" : 0 ,
"elevation" : 0
}
] ,
"length" : 69.72647 ,
"startNode" : {
"identifier" : "here:cm:node:66488603" ,
"geometry" : {
"latitude" : 45.48495 ,
"longitude" : 9.23058 ,
"z_level" : 0 ,
"elevation" : 0
}
} ,
"endNode" : {
"identifier" : "here:cm:node:66488604" ,
"geometry" : {
"latitude" : 45.48514 ,
"longitude" : 9.23143 ,
"z_level" : 0 ,
"elevation" : 0
}
}
}
セグメントの正の方向は、開始ノードから終了ノードに移動することに対応します。 開始ノードの経度 は終了ノードよりも小さいため、正の方向はウェストからイーストへの移動に対応します。 この区間を東西に移動しないようにするには、この区間を負の方向avoid[segments]=here:cm:segment:95058600#-
に移動しないでください 。
curl -X GET \
'https://router.hereapi.com/v8/routes?origin=45.485299,9.232146&destination=45.484785,9.229564&avoid[segments]=here:cm:segment:95058600#-&return=polyline&spans=segmentRef&transportMode=car&departureTime=any&apikey={YOUR_API_KEY}'