新型コロナの感染状況(2020/5/9)

今週もSpatiaLiteを使って新型コロナの感染状況を地図表示します。

実現する仕組み

今回は前回同様、PythonでスクレイピングしたデータをSpatiaLiteデータベースへインポートし世界地図とSQLで結合します。仕組みを以下に図示します。

今回実現する仕組み

スクレイピングとインポート作業の詳細は、以下の記事を参考にしてください。

なお、”spatialite_gui”ユーティリティは、日本語を含むディレクトリ名には対応していない(エラーとなる)ようですので、注意してください。
”spatialite_gui”で取り込んだデータを確認すると、以下のようになります。

取り込んだデータをspatialite_guiで確認した結果

OpenJUMPを使ってグラフ表示

6週間分のグラフをOpenJUMPのDB Query(SQL)を使って表示します。

1.感染者数(総数)
まずは全世界を見てみましょう。
アメリカが圧倒的という状況に変化はないですが、ロシア、インド、ブラジル、ペルーが伸びてきています。

全世界の感染者の推移

アメリカの感染者数が多すぎますので、アメリカを除外します。
ヨーロッパ中心部の感染者数の増加は、頭打ちもしくは鈍化しているように見えますが、イギリスにはその傾向は見えません。

アメリカを除いてヨーロッパ中心部をグラフ化

発行したSQLは以下のようになります。

(発行SQL)
select na.name_ja ja_name ,w1.tcases w1 ,w2.tcases w2 ,w3.tcases w3 ,w4.tcases w4 ,w5.tcases w5 ,w6.tcases w6 ,na.Geometry geom
from naturalearth na
left outer join stat0404 w1 on (na.name_en=w1.country)
left outer join stat0411 w2 on (na.name_en=w2.country)
left outer join stat0418 w3 on (na.name_en=w3.country)
left outer join stat0426 w4 on (na.name_en=w4.country)
left outer join stat0503 w5 on (na.name_en=w5.country)
left outer join stat0510 w6 on (na.name_en=w6.country)
where na.name not like ‘%America%’;

2.100万人あたりの感染者数
100万人あたりの感染者数を確認すると、ロシア、中東、南米の増加傾向が確認できます。

100万人あたりの感染者数

対象からアメリカを除いてヨーロッパ中心部を拡大すると、度運化しているようですが、頭打ちには至っていないように見えます。

ヨーロッパ中心部の100万人あたりの感染者数

発行したSQLは、以下のようになります。

(発行SQL)
select na.name_ja ja_name ,w1.tc1mpop w1 ,w2.tc1mpop w2 ,w3.tc1mpop w3 ,w4.tc1mpop w4 ,w5.tc1mpop w5 ,w6.tc1mpop w6 ,na.Geometry geom
from naturalearth na
left outer join stat0404 w1 on (na.name_en=w1.country)
left outer join stat0411 w2 on (na.name_en=w2.country)
left outer join stat0418 w3 on (na.name_en=w3.country)
left outer join stat0426 w4 on (na.name_en=w4.country)
left outer join stat0503 w5 on (na.name_en=w5.country)
left outer join stat0510 w6 on (na.name_en=w6.country)
where na.name not like ‘%America%’;

3.100万人あたりの死亡者数
次に、100万人あたりの死亡者数を確認しましょう。
ブラジル、インドは、死亡率の観点では、ヨーロッパや北米よりはるかに低いことがわかります。。

100万人あたりの死亡者数

発行したSQLは、以下のようになります。

(発行SQL)
select na.name_ja ja_name ,w1.d1mpop w1 ,w2.d1mpop w2 ,w3.d1mpop w3 ,w4.d1mpop w4 ,w5.d1mpop w5 ,w6.d1mpop w6 ,na.Geometry geom
from naturalearth na
left outer join stat0404 w1 on (na.name_en=w1.country)
left outer join stat0411 w2 on (na.name_en=w2.country)
left outer join stat0418 w3 on (na.name_en=w3.country)
left outer join stat0426 w4 on (na.name_en=w4.country)
left outer join stat0503 w5 on (na.name_en=w5.country)
left outer join stat0510 w6 on (na.name_en=w6.country);

アジアの100万人あたりの死亡者も確認しましょう。
全般的に中東が多く、イランが圧倒的となっていて、UAEも伸びています。

アジアの100万人あたりの死亡者数

発行したSQLは、以下のようになります。

(発行SQL)
select na.name_ja ja_name ,w1.d1mpop w1 ,w2.d1mpop w2 ,w3.d1mpop w3 ,w4.d1mpop w4 ,w5.d1mpop w5 ,w6.d1mpop w6 ,na.Geometry geom
from naturalearth na
left outer join stat0404 w1 on (na.name_en=w1.country)
left outer join stat0411 w2 on (na.name_en=w2.country)
left outer join stat0418 w3 on (na.name_en=w3.country)
left outer join stat0426 w4 on (na.name_en=w4.country)
left outer join stat0503 w5 on (na.name_en=w5.country)
left outer join stat0510 w6 on (na.name_en=w6.country)
where na.region_un=’Asia’;

4.100万人あたりの検査数
最後に100万人あたりの検査数を確認しましょう。
もはや我が国は先進国の潮流から取り残されていて、独自の歩みをしているようにすら見えます。

100万人あたりの検査者数

まとめ

今回は、以下を行いました。
1.世界地図とスクレイピングしたデータのSpatiaLiteへの取り込み
2.OpenJUMPによるグラフ表示(先週までとの比較)

グラフを見ていると、世界の感染はまだまだ収束しておらず、その中心がヨーロッパからロシアや南米などの新興国へ移ってきているように見えます。

仕事の関係で都内に通勤せざるを得ない私の目から見ると、都内への通勤者は徐々に増えているように感じます。
更には、飲食店なども今週中ごろから店を開けるとの予告も目立ち始め、”緊急事態宣言”の目的や実効性、包括的な政策といった点で残念な気持ちになってきています。

一般市民としては、収束を祈るしかないのでしょうか?