3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Choropleth Mapで日本のCOVID19感染状況を表示する

Last updated at Posted at 2020-03-22

追記(4月8日)

いろいろと間違いも多く改訂版を作成しました。
こちらをご覧ください。改訂版


この記事においては

のデータを使用しています。
作成している方々に感謝します。
#準備
##Choropleth Map data
日本のChoropleth Mapのデータがないため、国土地理院のデータを持ってきてはみたものの大きすぎるので手頃なデータを探したところRのパッケージのデータがいい感じでした。

QGISをインスートールして
qiita1.png
解凍したNipponMapのファイルをKMLにエクスポート

###CLIにて

ogr2ogr -f "KML" -mapFieldType Integer64=Real 'japansimple.kml'
jpn.shp

https://gdal.org/programs/ogr2ogr.html
を利用する場合、オプションが必要でした。

###ルックアップの作成
Choroplethで都道府県 市町村に対応!@takashikomatsubの資料をみながら、Splunkに取り込み
このデータだとXPATHの指定は不要
qiita2.png

:sweat:ArcGISのデータはこの用途には不適切なので、使いませんでした。国土地理院のデータ、Splunkオフィシャルでできないもんですかね。

###データの確認

japanSimple.kml
|inputlookup japanSimple

qiita3.png

##東洋経済Online 新型コロナウイルス国内感染の状況 から

https://github.com/kaz-ogiwara/covid19/
にあるデータが県別にまとまっているので、こちらを使用してみる
MITライセンスなので、使いやすい

ただし、4月6日現在確認したところ3月24日で更新が止まっている。
再開を期待します。

データはindividuals.csv

以前は下記の通り、props.confなどを作成しましたが、今回はShellでやってみる。
これは過去分

###props.conf

props.conf
[individuals_csv]
KV_MODE = none
MAX_TIMESTAMP_LOOKAHEAD = 10
SHOULD_LINEMERGE = 0
TIME_FORMAT = %Y,%m,%d
TIME_PREFIX = \d+,\d+,
category = Splunk App Add-on Builder
pulldown_type = 1
REPORT-csv = REPORT-csv
LINE_BREAKER = ([\r\n]+)
NO_BINARY_CHECK = true
description = CSV
disabled = false
SEDCMD = s/^新.*$//

ヘッダーを消すのに、すごく苦労したのは秘密です。:sweat:

transforms.conf
[REPORT-csv]
DELIMS = ","
FIELDS = "newNo","oldNo","year","month","day","old","gender","pref","city"

##input.conf用

dl_csv.sh
#!/bin/zsh

url='https://raw.githubusercontent.com/kaz-ogiwara/covid19/master/data/individuals.csv'
cd ../lookups
curl -fsX GET $url -o individuals.csv
{cat header.txt; tail -n +2 individuals.csv} > japan.csv

Macosxなのでzsh. etc/apps/covid19_japan/bin配下に配置

####lookup
https://en.wikipedia.org/wiki/Prefectures_of_Japan
から県のデータを作成した

Area AreaCode Capital Density Distr. ISO Kanji M MajorIsland Municipalities N O P Population Prefecture Region
484 446.9 Nagoya 094 5 1 愛知県 7 Honshu 172.48 54 JP-23 052 7 Aichi Chūbu

改めてAPPSにする際使用しているファイルはこれ

prefecture.csv:

Prefecture Kanji Capital Region Major_Island
Aichi 愛知県 Nagoya Chubu Honshu
Akita 秋田県 Akita Tohoku Honshu
Aomori 青森県 Aomori Tohoku Honshu
Chiba 千葉県 Chiba Kanto Honshu
Ehime 愛媛県 Matsuyama Shikoku Shikoku
Fukui 福井県 Fukui Chubu Honshu
Fukuoka 福岡県 Fukuoka Kyushu Kyushu
Fukushima 福島県 Fukushima Tohoku Honshu
Gifu 岐阜県 Gifu Chubu Honshu
Gunma 群馬県 Maebashi Kanto Honshu
Hiroshima 広島県 Hiroshima Chugoku Honshu
Hokkaido 北海道 Sapporo Hokkaido Hokkaido
Hyogo 兵庫県 Kobe Kansai Honshu
Ibaraki 茨城県 Mito Kanto Honshu
Ishikawa 石川県 Kanazawa Chubu Honshu
Iwate 岩手県 Morioka Tohoku Honshu
Kagawa 香川県 Takamatsu Shikoku Shikoku
Kagoshima 鹿児島県 Kagoshima Kyushu Kyushu
Kanagawa 神奈川県 Yokohama Kanto Honshu
Kochi 高知県 Kochi Shikoku Shikoku
Kumamoto 熊本県 Kumamoto Kyushu Kyushu
Kyoto 京都府 Kyoto Kansai Honshu
Mie 三重県 Tsu Kansai Honshu
Miyagi 宮城県 Sendai Tohoku Honshu
Miyazaki 宮崎県 Miyazaki Kyushu Kyushu
Nagano 長野県 Nagano Chubu Honshu
Nagasaki 長崎県 Nagasaki Kyushu Kyushu
Nara 奈良県 Nara Kansai Honshu
Niigata 新潟県 Niigata Chubu Honshu
Oita 大分県 Oita Kyushu Kyushu
Okayama 岡山県 Okayama Chugoku Honshu
Okinawa 沖縄県 Naha Kyushu Ryukyu Islands
Osaka 大阪府 Osaka Kansai Honshu
Saga 佐賀県 Saga Kyushu Kyushu
Saitama 埼玉県 Saitama Kanto Honshu
Shiga 滋賀県 Otsu Kansai Honshu
Shimane 島根県 Matsue Chugoku Honshu
Shizuoka 静岡県 Shizuoka Chubu Honshu
Tochigi 栃木県 Utsunomiya Kanto Honshu
Tokushima 徳島県 Tokushima Shikoku Shikoku
Tokyo 東京都 Shinjuku Kanto Honshu
Tottori 鳥取県 Tottori Chugoku Honshu
Toyama 富山県 Toyama Chubu Honshu
Wakayama 和歌山県 Wakayama Kansai Honshu
Yamagata 山形県 Yamagata Tohoku Honshu
Yamaguchi 山口県 Yamaguchi Chugoku Honshu
Yamanashi 山梨県 Kofu Chubu Honshu
:sweat:手作業で文字(ōとかū)を変換しております。
これもlookupsフォルダに入れておく

##検索

corona.spl
source="individuals.csv"
| stats count by pref
| lookup prefecture Kanji as pref OUTPUT Prefecture as featureId
| fields - pref
| geom japanSimple
| where isnotnull(featureId)

qiita_corona.png
やっぱり、北海道のインパクトがすごい。

###predictで確認

predict.spl
source="individuals.csv"
| timechart count as Counts by pref where sum in top5
| tail 60
| reverse
| predict 東京都 北海道 兵庫県 愛知県 大阪府 OTHER

predictで感染者数上位5県の推移をみてみる

qiita4.png
クリックしてみてみると、東京都以外は推移が変わらなそう。
全国的には増加傾向・・・
東京都の波はなんだろう:thinking:

##COVID19Japan.com Data - Patient Data.csv
Japan COVID-19 Coronavirus TrackerのデータをCSVで出力

props.conf
[covid19_csv]
INDEXED_EXTRACTIONS = csv
KV_MODE = none
LINE_BREAKER = ([\r\n]+)
NO_BINARY_CHECK = true
SHOULD_LINEMERGE = false
TIMESTAMP_FIELDS = Date Announced
TIME_FORMAT = %F
category = Structured
description = Comma-separated value format. Set header and other settings in "Delimited Settings"
disabled = false
pulldown_type = true

csvのソースタイプを改変してcovid19_csvとして設定

以上で準備完了

##現在(2020/03/22)の県別感染状況

infected.spl
source="COVID19Japan.com Data - Patient Data.csv" sourcetype="covid19_csv"
| stats count by "Residence City_ Prefecture"
| rename "Residence City_ Prefecture" as featureId
| geom japanSimple

qiita4.png
地名を詳細に取っていないのでかなりざっくりしている。

_Prefecture Data_で作れば、もっと綺麗にでるはず

#新たにAppsにする

.
├── bin
│   ├── README
│   └── dl_csv.sh
├── default
│   ├── app.conf
│   └── data
│       └── ui
│           ├── nav
│           │   └── default.xml
│           └── views
│               └── README
├── local
│   ├── app.conf
│   └── transforms.conf
├── lookups
│   ├── header.csv
│   ├── header.txt
│   ├── individuals.csv
│   ├── japan.csv
│   └── prefecture.csv
└── metadata
    ├── default.meta
    └── local.meta

9 directories, 14 files

lookupsフォルダは新たに作成した。

##検索

choroplethMap.spl
| inputlookup japan.csv
| eval _time=strptime(year." ".month." ".day,"%Y %m %d")
| stats count by pref
| lookup prefecture.csv Kanji as pref OUTPUT  Prefecture as featureId
| geom japansimple
| fields - pref
| sort - count

qiita_c.png

#predict

predict.spl
| inputlookup japan.csv
| eval _time=strptime(year." ".month." ".day,"%Y %m %d")
| timechart count by pref where sum in top5
| fields - OTHER
| predict 東京都 北海道 兵庫県 愛知県 大阪府 future_timespan=30

3月24日までのデータから導き出した図
qiita_p.png

現在(4月6日)で100名を超えているなんて、この段階ではわからなった。

#NHKのデータで検索する
NHKのデータ利用については
https://www.nhk.or.jp/faq-corner/4housoubangumi/05/04-05-11.html

  • 基本的にNHKのホームページにリンクされることは自由です。ただしリンクは、NHKオンライントップページか、各番組のトップページにお願いします。
  • 個別の記事へのリンクは基本的にご遠慮いただいています。理由は個々のページや記事は掲載期間が決まっておらずリンク切れを起こしやすいことと、掲載内容も変更されることがあるためです。

としかないため、とても微妙。ダウンロード先の掲載はやめておきます。

##ダウンロードしてきたファイルの整形

dl_json.sh
cat data.json | sed 's/\\\u\(....\)/\&#x\1;/g' | sed 's$\\/$/$g' | nkf --numchar-input -w > japan.json

ダウンロードした後、unicode文字列を変換している。

##Splunkに読み込み
今回はJSONなのでindexに読み込む

props.conf
[covid19_json]
DATETIME_CONFIG = CURRENT
INDEXED_EXTRACTIONS = none
KV_MODE = json
LINE_BREAKER = (,)(\"data47|\"category|\"stacking|{\"data\")
NO_BINARY_CHECK = true
category = Structured
description = json
disabled = false
pulldown_type = true
SHOULD_LINEMERGE = false
TRUNCATE = 0
SEDCMD-json = s/^(\".*)/{\1/
SEDCMD-json_f = s/(.*(\]|\")$)/\1}/
JSON_TRIM_BRACES_IN_ARRAY_NAMES = true
SEDCMD-data47 = s/^.*data47\":\[|//
SEDCMD-trim = s/\],\"unit.*$//

JSON_TRIM_BRACES_IN_ARRAY_NAMESINDEXED_EXTRACTION=JSONじゃないと動かないみたい
一日一回だけ読み込むので、こんなにSEDCMDがあっても大丈夫でしょう。

##検索

search.spl
source="japan.json" sourcetype="covid19_json"
| rename *{} as *
| fields - _*
| eventstats values(category) as category
| table category data name
| eval tmp=mvzip(category,data)
| streamstats count
| stats values(name) as name by count tmp
| eval date=mvindex(split(tmp,","),0), data=mvindex(split(tmp,","),1)
| table date data name
| eval _time= strptime(date,"%m/%d")
| timechart useother=f span=1d sum(data) by name where sum in top10

timepickerは「全時間」で。
qiita_n.png
このようなログを
qiita_S.png
このように変換している。

##機械的予測

predict.spl
...
| table _time 東京都 神奈川県 埼玉県 千葉県 大阪府 兵庫県 福岡県
| predict 東京都 神奈川県 埼玉県 千葉県 大阪府 兵庫県 福岡県 future_timespan=30

緊急事態宣言が出る7都道府県を予測

qiita_pre.png
こちらは専門家に聞きたいところ。

##ChoroplethMap
qiita_chro.png

map.spl
...
| fields _time date name data
| stats sum(data) as count by name
| lookup prefecture.csv Kanji as name OUTPUT  Prefecture as featureId 
| geom japansimple
| fields - name
| sort - count

福岡県はまだ数としては多くないけれど増加率がすごいのでしょう。

#まとめ
データを探すとことが一番大変ですね。
CSVのヘッダーを削除するのはShellでできたので、東洋経済さんのデータの更新が再開したら、inputs.confを作ろうと思います。

厚生労働省のページのデータがhtmlだったり、pdfだったりと、後の利用を全く考えていただけていないので、
nhkのデータを利用できないかな〜と思っています。

データの再利用等問題がありましたら、ご指摘お願いします。

3
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?