ルート検索を実行する
xData Edge環境で、APIを使ってルート検索を実行する方法を説明します。説明で使用するコードやデータはこちらからダウンロードできます。
1. 道路形状データの投入
ルート検索を実行するためには道路形状データが必要です。道路形状の要件についてはこちらを参照してください。
routing-files.zip内のrouting_sample.sqlをevwhのVMにコピーし、データをリストアします。
kubectl cp routing_sample.sql evwhdb01-xxxxxxxxxx-xxxxx:/opt/edge-evwh-db/
kubectl exec -it evwhdb01-xxxxxxxxxx-xxxxx -- /bin/bash
cd /opt/edge-evwh-db/
psql -d evwh -U evwh_admin -h evwhdb01 -f routing_sample.sql
2. リスクマップの投入
リスクマップのリスク値を考慮したルート検索を行うため、リスクマップのデータが必要です。 「Getting Started リスクマップを取得する」の「1. リスクマップの投入」の手順でリスクマップを投入します。
3. ルート検索の実行
ルート検索API(routing.dijkstra)を利用して、リスクマップのリスク値を考慮したルート検索を行います。
今回は以下の条件でルート検索を行います。
- リスクマップのテーマ:
sample_aqi_risk_5min- EvWH上のスキーマ
riskmap、テーブルsample_aqi_risk_5minを参照します
- EvWH上のスキーマ
- リスクの重み: [0, 0, 0, 0, 10000, 10000, 10000, 10000, 10000, 10000, 10000]
- リスク4以上を避けるルートを検索します
- 始点: 139.62317508963767, 35.46312510191533
- みなとみらい 新高島付近
- 終点: 139.64200039914058, 35.451926042596774
- みなとみらい 赤レンガ倉庫付近
- 開始時刻: "2020-01-01 10:00:00+09"
- 利用する地図データ: "sample"
- 今回は1で投入した道路データ('routing.sample_node','routing.sample_edge')を使用します
また、可視化のために結果からgeojson部分を取り出します。
この実装例がrouting.pyです。
EdgeをインストールしたVMでrouting.py を実行する際に、以下のように結果をファイルに保存し、次項で可視化します。
python3 routing.py > routing.json
4. ルートの可視化
ここでは可視化にQGISを使用します。QGISはこちらからダウンロードできます。
ルートの表示
QGISを起動したら、XYZTilesのOpenStreetMapを選択します。
routing.pyを実行した結果はGeoJSON形式で出力されるので、前項で保存したファイルを地図上にドラッグ&ドロップします。
レイヤに「routing」が追加されるので、右クリックしてメニューから「レイヤの領域にズーム」を選択します。
次に「routing」のプロパティから「シンボロジ」を選択し幅を1ミリメートルに設定します。
リスクマップの表示
ルート検索の開始時刻のリスクマップがrouting-files.zip内のriskmap-20200101-1000.jsonです。
これを地図上にドラッグ&ドロップし、「riskmap - result」のプロパティを選択から以下の設定をします。
シンボロジメニュー連続値による定義に変更値をriskに設定分類ボタン右の+ボタンを押し、分類を追加- 追加した分類の値を
4.000000-10.000000に設定 - 不透明度を
50%
ルート検索結果の確認
ルート検索でリスク値4以上を避ける条件を指定したため、表示されているリスク値4以上のエリアを避けるルートが取得できていることが確認できます。

