コンテンツにスキップ

リスクマップを取得する

xData Edge環境で、EvWHのリスクマップデータをAPIを使って取得する方法を説明します。説明で使用するコードやデータはこちらからダウンロードできます。EvWHのコンテナの名称は環境毎に異なるのでこの方法で確認してください。

1. リスクマップの投入

リスクマップは、時間属性と空間属性、 その時間と空間に観測された(または予測される)リスク値からなるレコードの集合です。 詳細はリスクマップデータの共通仕様を参照してください。 実際は予測アルゴリズムなどで生成したリスクマップを利用するのが一般的ですが、今回は事前に準備したダミーのリスクマップのデータを使用します。

EdgeをインストールしたVMにriskmap-files.zipをコピーし、内部のsample_riskmap.sqlを以下のようにEvWHのコンテナにコピーします。

kubectl cp sample_riskmap.sql evwhdb01-67466c9dc5-fcpl2:/opt/edge-evwh-db/

次に以下のようにEvWHのコンテナでsample_riskmap.sqlを実行し、テーブルの作成とデータの投入をします。

kubectl exec -it evwhdb01-67466c9dc5-fcpl2 -- /bin/bash
cd /opt/edge-evwh-db/
psql -d evwh -U evwh_admin -h evwhdb01 -f sample_riskmap.sql

2. リスクマップの取得

リスクマップ取得API(mapserv.riskmap)を利用して、EvWHのリスクマップデータを取得します。

リスクマップを取得するためには、取得するリスクマップデータのテーマ名・時間・空間・空間粒度を指定する必要があります。

今回は以下の条件でリスクマップを取得します。

  • テーマ: sample_aqi_risk_5min
    • EvWH上のスキーマriskmap、テーブルsample_aqi_risk_5minを参照します
  • 時間: start_datetime >= 2020-01-01 12:00:00 かつ end_datetime <= 2020-01-01 15:00:00
  • 空間: 緯度35度から36度, 経度139度から140度の矩形

この実装例がget_riskmap.pyです。 EdgeをインストールしたVMでget_riskmap.py を実行する際に、以下のように結果をファイルに保存し、次項で可視化します。

python3 get_riskmap.py > riskmap.json

2. リスクマップの可視化

ここでは可視化にQGISを使用します。QGISはこちらからダウンロードできます。

QGISを起動したら、XYZTilesOpenStreetMapを選択します。 get_riskmap.pyを実行した結果はGeoJSON形式で出力されるので、前項で保存したファイルを地図上にドラッグ&ドロップします。

レイヤに「riskmap - result」が追加されるので、右クリックしてメニューから「レイヤの領域にズーム」を選択します。 次に「riskmap - result」のプロパティを選択し、以下の設定をします。

  • シンボロジメニュー
    • 連続値による定義に変更
    • riskに設定
    • 分類ボタンを押下し、シンボル-の組を作成

図1

  • 時系列メニュー
    • 動的時系列コントロールをオン
    • 設定をDate/Time型の単一フィールドとし、フィールドdatetime、継続時間を5分

図3

設定が完了したらOKを押下します。

次にQGISのメイン画面で時系列コントローラパネルを押下し、時系列コントローラを表示します。

図4

時系列コントローラからアニメーション時系列ナビ 図6 を選択し、アニメーション範囲として、2020-01-01 10:00:00 から 2020-01-10 16:00:00、ステップを5分と設定し再生ボタンを押下すると、時間に応じて空間のリスクが赤〜白で表示されます。

図5