追記(4月8日)
いろいろと間違いも多く改訂版を作成しました。
こちらをご覧ください。改訂版
この記事においては
- NipponMap: Japanese Map Data and Functions
- Japan COVID-19 Coronavirus Tracker
- 東洋経済Online新型コロナウイルス国内感染の状況
のデータを使用しています。
作成している方々に感謝します。
準備
Choropleth Map data
日本のChoropleth Mapのデータがないため、国土地理院のデータを持ってきてはみたものの大きすぎるので手頃なデータを探したところRのパッケージのデータがいい感じでした。
QGISをインスートールして
解凍したNipponMapのファイルをKMLにエクスポート
CLIにて
ogr2ogr -f "KML" -mapFieldType Integer64=Real 'japansimple.kml'
jpn.shp
https://gdal.org/programs/ogr2ogr.html
を利用する場合、オプションが必要でした。
ルックアップの作成
Choroplethで都道府県 市町村に対応!@takashikomatsubの資料をみながら、Splunkに取り込み
このデータだとXPATH
の指定は不要
ArcGISのデータはこの用途には不適切なので、使いませんでした。国土地理院のデータ、Splunkオフィシャルでできないもんですかね。
データの確認
|inputlookup japanSimple
東洋経済Online 新型コロナウイルス国内感染の状況 から
https://github.com/kaz-ogiwara/covid19/
にあるデータが県別にまとまっているので、こちらを使用してみる
MITライセンスなので、使いやすい
ただし、4月6日現在確認したところ3月24日で更新が止まっている。
再開を期待します。
データはindividuals.csv
以前は下記の通り、props.confなどを作成しましたが、今回はShellでやってみる。
これは過去分
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/^新.*$//
ヘッダーを消すのに、すごく苦労したのは秘密です。
[REPORT-csv]
DELIMS = ","
FIELDS = "newNo","oldNo","year","month","day","old","gender","pref","city"
input.conf用
#!/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 |
手作業で文字(ōとかū)を変換しております。
これもlookupsフォルダに入れておく
検索
source="individuals.csv"
| stats count by pref
| lookup prefecture Kanji as pref OUTPUT Prefecture as featureId
| fields - pref
| geom japanSimple
| where isnotnull(featureId)
predictで確認
source="individuals.csv"
| timechart count as Counts by pref where sum in top5
| tail 60
| reverse
| predict 東京都 北海道 兵庫県 愛知県 大阪府 OTHER
predictで感染者数上位5県の推移をみてみる
クリックしてみてみると、東京都以外は推移が変わらなそう。
全国的には増加傾向・・・
東京都の波はなんだろう
COVID19Japan.com Data - Patient Data.csv
Japan COVID-19 Coronavirus TrackerのデータをCSVで出力
[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)の県別感染状況
source="COVID19Japan.com Data - Patient Data.csv" sourcetype="covid19_csv"
| stats count by "Residence City_ Prefecture"
| rename "Residence City_ Prefecture" as featureId
| geom japanSimple
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
フォルダは新たに作成した。
検索
| 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
predict
| 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
現在(4月6日)で100名を超えているなんて、この段階ではわからなった。
NHKのデータで検索する
NHKのデータ利用については
https://www.nhk.or.jp/faq-corner/4housoubangumi/05/04-05-11.html
- 基本的にNHKのホームページにリンクされることは自由です。ただしリンクは、NHKオンライントップページか、各番組のトップページにお願いします。
- 個別の記事へのリンクは基本的にご遠慮いただいています。理由は個々のページや記事は掲載期間が決まっておらずリンク切れを起こしやすいことと、掲載内容も変更されることがあるためです。
としかないため、とても微妙。ダウンロード先の掲載はやめておきます。
ダウンロードしてきたファイルの整形
cat data.json | sed 's/\\\u\(....\)/\&#x\1;/g' | sed 's$\\/$/$g' | nkf --numchar-input -w > japan.json
ダウンロードした後、unicode文字列を変換している。
Splunkに読み込み
今回はJSONなのでindexに読み込む
[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_NAMES
はINDEXED_EXTRACTION=JSON
じゃないと動かないみたい
一日一回だけ読み込むので、こんなにSEDCMD
があっても大丈夫でしょう。
検索
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は「全時間」で。
このようなログを
このように変換している。
機械的予測
...
| table _time 東京都 神奈川県 埼玉県 千葉県 大阪府 兵庫県 福岡県
| predict 東京都 神奈川県 埼玉県 千葉県 大阪府 兵庫県 福岡県 future_timespan=30
緊急事態宣言が出る7都道府県を予測
ChoroplethMap
...
| 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のデータを利用できないかな〜と思っています。
データの再利用等問題がありましたら、ご指摘お願いします。