前提条件
本記事の内容を試すために、WireCloud の稼働環境が必要です。”WireCloudのセットアップ” の記事を参考にして環境を作成してください。
Widget のインストール
ダッシュボードを作成するために必要なウィジェットをインストールします。WireCloud にログインして、ウィジェットのマーケットプレイスに移動します。マーケットプレイスから以下のウィジェットをインストールします。ウィジェットのバージョンに注意してください。これらのウィジェットやオペレータを既にインストール済みの場合、この手順は不要です。
- FISUDA/ngsi-source/4.2.0b2
- FISUDA/ngsi-entity-filter/0.1.2
- FISUDA/labels-to-dataserie/0.3.2
- FISUDA/line-chart-generator/0.1.1
- FISUDA/cumulative-list/0.1.0
- FISUDA/pie-chart-generator/0.3.4a2
- CoNWeT/value-list-filter/0.1.3
- CoNWeT/highcharts/0.1.4
利用するオープンデータ
東京都オープンデータカタログサイトホームページに「新型コロナウイルス感染症にかかるオープンデータ」が公開されています。
- 東京都_新型コロナウイルス陽性患者発表詳細
- 東京都 新型コロナ受診相談窓口相談件数
- 東京都 新型コロナコールセンター相談件数
これらのオープンデータを WireCloud で可視化します。
新型コロナウイルス陽性患者数を可視化
新型コロナウイルス要請患者について、性別、年代、日別の陽性患者数、陽性患者数の累計のグラフを作成します。
利用するNGSIデータ
東京都_新型コロナウイルス陽性患者発表詳細のオープンデータはCSVファイルで公開されています。これを FIWARE Orion に保存するために NGSI形式のデータに変換する必要があります。このため、以下のようなデータモデルに変換しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ curl "https://orion.lab.letsfiware.jp/v2/entities?type=Patients&limit=1&options=keyValues" -H 'Fiware-ServicePath: /tutorial/covid19' -sS -H 'Accept: application/json' | jq . [ { "id": "urn:ngsi-ld:covid19:Patients:tokyo:1", "type": "Patients", "age": "40代", "cityName": "", "condition": "", "dayOfWeek": "金", "details": "", "discharged": "1", "gender": "男性", "no": 1, "onsetDate": "", "prefectureCode": "130001", "prefectureName": "東京都", "publishedDate": "2020-01-24", "remarks": "", "residence": "湖北省武漢市", "symptoms": "", "travelRecord": "" } ] |
陽性患者の性別
陽性患者の性別比率を円グラフで表示します。
陽性患者の値リストを作成
NGSI source オペレータを使って、Orion から、エンティティ・タイプ “Patients” のエンティティをすべて取り出し、 Value List Filter にワイヤリングして、陽性患者の値リストを作成します。この結果を、Labels to dataserie オペレータに入力して、ラベル毎の値を集計します。ここでのラベルは、”男性” や “女性” です。
ワイヤリング
ウィジェットを以下のようにワイヤリングして、ウィジェットの設定値を変更します。

NGSI source オペレータ の設定
- NGSI server URL: https://orion.lab.letsfiware.jp/
- FIWARE-ServicePath: /tutorial/covid19
- NGSI entity types: Patients
- buffering: チェックをつける
Value List Filter オペレータの設定
“Patients” のエンティティから、gender 属性の値を取り出す設定を追加します。
- Attribute: gender

Labels to dataserie オペレータの設定
特に設定はありません
オペレータによりデータの処理結果
Value List Filterの処理結果は以下のようになります。これは、複数の “Patients” のエンティティから、gender 属性の値をリストにしたものです。これが、Labels to dataserie オペレータへの入力になります。

Labels to dataserie オペレータによる処理結果は、以下のようになります。ラベルとラベルの件数が、Reduced label serie (左側の結果) と Data serie (右側の結果) のエンドポイントから出力されます。

円グラフの作成
陽性患者の性別の比率を円グラフにするため、Pie Chart Generator オペレータ で、Lables to dataserie の処理結果から Chata Data Model を作成し、Highcharts ウィジェットに送ります。ワイヤリングは以下の通りです。

以下のようなグラフが表示されれば、正しく設定できています。

陽性患者の年代
陽性患者の年代比率のグラフも、陽性患者の性別と同様に作成できます。
ワイヤリング
陽性患者の性別のグラフ化で作成した、同じウィジェットを使い、それらをワイヤリングします。NGSI source の Entities の出力エンドポイントから、Value List Filter, Labels to dataserie, Pie Chart Generator, Highcharts の順でウィジェットを接続します。

Value List Filter オペレータの設定
新しく追加した、Value List Filter には、”Patients” のエンティティから、age 属性の値を取り出す設定を追加します。
- Attribute: age

陽性患者の年代比率の円グラフ
以下のようなグラフが表示されれば、正しく設定できています。

日別の陽性患者数
日別の陽性患者数をカラム・グラフで表示します。日別の陽性患者の数値は、Patients エンティティの publishedDate の件数を集計することで算出します。これは先ほどの陽性患者の性別や年代の場合と同様に、Value List Filter と Labels to dataserie を利用します。
ワイヤリング
Value List Filter と Labels to dataserie を新たに追加し、NGSI source オペレータのEntities エンドポイントから Value List Filter と Labels to dataserie に以下の図のようにワイヤリングします。

Value List Filter オペレータの設定
“Patients” のエンティティから、publishedDate 属性の値を取り出す設定を追加します。
- Attribute: publishedDate

出力結果
Labels to dataserie オペレータによる処理結果は、以下のようになります。publishedDate ラベルとその件数が、Reduced label serie (左側の結果) と Data serie (右側の結果) のエンドポイントから出力されます。

カラム・グラフの作成
日別の陽性患者数をカラム・グラフにするため、Line Chart Generator オペレータ で、Lables to dataserie の処理結果から Chata Data Model を作成し、Highcharts ウィジェットに送ります。ワイヤリングは以下の通りです。

Line chart generator オペレータの設定
カラム・グラフを表示するため、Chart Type を指定します。
- Chart Type: column

以下のようなグラフが表示されれば、正しく設定できています。

陽性患者数の累計
最後に、陽性患者数の累計をカラム・グラフで表示します。Labels to dataserie オペレータの Data serie エンドポイントから出力される、日別の要請患者数から累計を算出します。これには、Cumulative list オペレータを使用します。
ワイヤリング
Cumulative list オペレータ, Line chart generator オペレータ, Highcharts ウィジェットを追加し、以下のワイヤリングを行います。
- Labels to dataserie の Data serie エンドポイントと Cumulative list の In エンドポイントを接続
- Labels to dataserie の Reduced label serie エンドポイントと Line char generator の Timestamp List エンドポイントを接続
- Cumulative list の Out エンドポイントと Line char generator の Data Serie エンドポイントを接続
- Line char generator の Chart Data Model エンドポイントと Highcharts の Highcharts Options を接続

Cumulative list オペレータによる累計算出
Cumulative list オペレータの入力値 (図の左側) と出力値 (図の右側) の例を示します。

陽性患者数の累計グラフ
以下のようなグラフが表示されれば、正しく設定できています。

完成イメージ


