ルート探索 routing.dijkstra
指定したリスクマップの指定した日時におけるリスクを基に、安全で近い経路を探します。
実行方式は JSON-RPC v2.0 を利用します。
リクエスト例
{
"jsonrpc": "2.0",
"method": "routing.dijkstra",
"params": [
{
"themes": {
"peopleflow_congestiondegree_5min": [0, 0, 0, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000]
},
"start_lonlat": [139.632214, 35.457874],
"goal_lonlat": [139.632108, 35.450862],
"start_datetime": "2018-08-23 14:00:00+09",
"via": [
[139.630030, 35.456772],
[139.635325, 35.458278],
[139.628369, 35.461005],
[139.635849, 35.462663]
],
"map": "adf_170701_v2",
"reorder_waypoints": true,
"with_kml": true
}
],
"id": "routing_dijkstra"
}
パラメータ
パラメータ名 | データ型 | 内容 | 既定値 |
---|---|---|---|
themes | [string, [string,...]] | リスクマップのテーマ名 | 必須 |
start_lonlat | [number, number] | 始点の経度,緯度 | 必須 |
goal_lonlat | [number, number] | 終点の経度,緯度 | 必須 |
start_datetime | string | 日時 ("YYYY-MM-DD hh:mm:ss+TZ") | 必須 |
via | array of array of number | 経由地の経度と緯度 | [] (経由地なし) |
map | string | 利用する地図データ | サーバ側で決定 |
reorder_waypoints | boolean | true を指定すると経由地の訪問順序最適化を行う | false |
with_kml | boolean | true を指定するとレスポンスに KML を含む | false |
params.themes の要素
種別 | データ型 | 説明 |
---|---|---|
キー | string | リスクマップのテーマ名 |
値 | array of number | リスク感受性 |
備考および制約事項
- リスクを考慮しない場合は、themes に空オブジェクト (
{}
) を指定する - リスク感受性の i 番目の要素 (i = 0, 1, ..., 10) が x であるとき、次のように解釈される
- リスクが i の領域を通過するときの所要時間を (1.0 + x) 倍として計算する
- 閾値以上のリスクを回避したければ
[0, 0, 0, 0, 0, 0, 0, 0, 9999, 9999, 9999]
のように指定- 上記指定の意味: リスク 0 から 7 は通行に支障なし。リスク 8 から 10 は通常の 10000 倍の所要時間 (事実上通行できない)
- start_lonlat, end_lonlat, via に指定可能な範囲は地図データに依存する。地図がカバーする範囲を逸脱している場合は経路探索を行えない
- map に指定可能な値は地図データに依存する。特に必要がない場合は未指定とすることを推奨
出力サンプル
{
"jsonrpc": "2.0",
"result": {
"kml": "<?xml ....",
"geojson": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[139.632911226, 35.457119237],
[139.631598771, 35.458785682]
]
},
"properties": {
"edge_id": 240255,
"length": 219.95193,
"speed": 30,
"risk": 3,
"waypoint": false,
"notes": []
}
},
...
]
},
"length": 6090.416765900001,
"time": 0.18572096683666667,
"total_cost": 525.1314270966666,
"max_risk": 3,
"avr_risk": 1.8275290401567656,
"start_node": 186048,
"end_node": 185990
},
"id": "routing_dijkstra"
}
戻り値
経路の形状や予測所要時間などの情報を含む JSON オブジェクトを返します。
キー | データ型 | 内容 |
---|---|---|
kml | string | KML フォーマットの経路 (with_kml: true の場合のみ) |
geojson | object (GeoJSON) | GeoJSON フォーマットの経路 |
length | number | 経路の総距離 (m) |
time | number | 予測所要時間 (時間) |
total_cost | number | 経路上の「コスト * 距離」の総和 |
max_risk | number | 経路上の最大リスク |
avr_risk | number | 経路上の平均リスク (距離按分) |
start_node | number | 出発地近傍のノード ID |
end_node | number | 目的地近傍のノード ID |
result.geojson
result.geojson の値は FeatureCollection 型の GeoJSON オブジェクトとする。
result.geojson.features[].geometry
各 feature の geometry オブジェクトは LineString として表現された経路情報とする。 一つの LineString が表す経路の単位は地図データに依存する。 coordinates は 2 点以上であるが、必ずしも 2 点とは限らない。
result.geojson.features[].properties
各 feature の properties には以下の情報を含める。
キー | データ型 | 説明 |
---|---|---|
edge_id | number | エッジ ID |
length | number | 経路長 (m) |
speed | number | 規制速度 (km/h) |
risk | number | 経路上のリスク |
waypoint | boolean | 当該経路の終点が目的地または経由地なら true |
notes | array of string | 当該経路上の注記情報 (条件付き規制情報等) |
説明
出発地 (start_lonlat
) から目的地 (goal_lonlat
) まで、経由地 (via
) を通って移動する経路を出力します。
このとき、出発日時 (start_datetime
) における経路上のリスクを考慮して、リスクを回避する経路を出力します。
リクエストパラメータの reorder_waypoints
に true
を指定した場合は、全体のコスト (リスク回避を考慮した所要時間) が最小となるように経由地を並べ替えます。
reorder_waypoints
が指定されない場合、または、false
が指定された場合には、指定された順序で経由地を辿ります。