コンテンツにスキップ

ルート検索を実行する

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を参照します
  • リスクの重み: [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を起動したら、XYZTilesOpenStreetMapを選択します。 routing.pyを実行した結果はGeoJSON形式で出力されるので、前項で保存したファイルを地図上にドラッグ&ドロップします。

レイヤに「routing」が追加されるので、右クリックしてメニューから「レイヤの領域にズーム」を選択します。
次に「routing」のプロパティから「シンボロジ」を選択し幅を1ミリメートルに設定します。

リスクマップの表示

ルート検索の開始時刻のリスクマップがrouting-files.zip内のriskmap-20200101-1000.jsonです。
これを地図上にドラッグ&ドロップし、「riskmap - result」のプロパティを選択から以下の設定をします。

  • シンボロジメニュー
    • 連続値による定義に変更
    • riskに設定
    • 分類ボタン右の+ボタンを押し、分類を追加
    • 追加した分類の値を4.000000-10.000000に設定
    • 不透明度を50%

図1

ルート検索結果の確認

ルート検索でリスク値4以上を避ける条件を指定したため、表示されているリスク値4以上のエリアを避けるルートが取得できていることが確認できます。

図2