日本の47都道府県がどのようなオープンデータを公開しているのか気になったので調べてみた。扱いたいのは都道府県別の行政単位なので、市区町村単位で公開している場合でも今回は無視している。
まずは各都道府県のwebページのURLを一覧にする。地方公共団体の提供するwebページへのリンクが一覧にまとめられているページがあるので、そこからデータをスクレイピングしてくる。
library(XML)
library(dplyr)
url <- "http://www.wam.go.jp/content/wamnet/pcpub/top/link/top_link04.html"
df.pref <- readHTMLTable(doc = url,
skip.rows = 1)[[1]] %>%
mutate(link = getHTMLLinks(url)[35:81]) %>%
rename(prefecture = リンク先名称) %>%
dplyr::select(-説明)
head(df.pref)
## prefecture link
## 1 北海道 http://www.pref.hokkaido.lg.jp/
## 2 青森県 http://www.pref.aomori.lg.jp/
## 3 岩手県 http://www.pref.iwate.jp/
## 4 宮城県 http://www.pref.miyagi.jp/
## 5 秋田県 http://www.pref.akita.lg.jp/
## 6 山形県 http://www.pref.yamagata.jp/
df.pref$linkに各行政のwebページのURLが格納されている。ブラウザで閲覧する場合はbrowseURL(url = df.pref[1, 2])かbrowseURL(url = df.pref$link[1])のようにする
ここはちまちまと手作業で。すべての行政がサイト内の検索ボックスを設けているので、そこから「オープンデータ」で検索。表示された結果から、妥当そうなページを拾ってくる。それらしいページがない場合は欠損値として扱った。
opendata <- c("http://www.pref.hokkaido.lg.jp/ss/jsk/opendata.htm",
NA,
NA,
NA,
NA,
"http://www.pref.yamagata.jp/ou/kikakushinko/020051/opendata.html",
"http://www.pref.fukushima.lg.jp/sec/11045a/open-data-top.html",
"http://www.pref.ibaraki.jp/kikaku/joho/it/opendata/od-00.html",
"http://tochigiken.jp",
NA,
"http://www.pref.saitama.lg.jp/a0105/saitamaken-opendatacatalog-2014/",
"http://www.pref.chiba.lg.jp/seisaku/toukeidata/opendata/index.html",
"http://www.metro.tokyo.jp/SUB/OPENDATA/",
NA,
"http://search.pref.niigata.lg.jp/go?rt=1438227613471&docId=73be07ab64594614972d97d2312e473d",
NA,
NA,
"http://www.pref.fukui.lg.jp/doc/toukei-jouhou/opendata/",
NA,
NA,
"http://www.pref.gifu.lg.jp/kensei-unei/johoka/denshi-jichitai/opendata/",
"http://open-data.pref.shizuoka.jp",
"http://www.pref.aichi.jp/0000069289.html",
"http://www.pref.mie.lg.jp/IT/HP/opendata/",
NA,
NA,
"http://www.pref.osaka.lg.jp/kikaku_keikaku/opendata/index.html",
"http://open-data.pref.hyogo.lg.jp",
NA,
"https://github.com/wakayama-pref-org/data_link_list",
"http://db.pref.tottori.jp/opendataResearch.nsf",
NA,
NA,
NA,
NA,
"http://ouropendata.jp",
"http://www.pref.kagawa.lg.jp/content/etc/subsite/opendata/",
NA,
NA,
"http://www.pref.fukuoka.lg.jp/dataweb/",
NA,
NA,
NA,
NA,
NA,
NA,
NA)
df.pref %<>% cbind(., opendata)
opendataという列に公開されているオープンデータのページのURLをおさめた。
47都道府県のうち26の行政がオープンデータを公開していないらしい。
一覧はこちら
knitr::kable(df.pref)
せっかくなので。
日本地図の塗り分けには、前回同様 @hrbrmstr の {lineworkmaps}を使う。
まずはデータセットの作成から。全国地方公共団体コードを地図データと結合させるためにISO3166_2という名前の列で用意し、オープンデータのページの有無を在不在データとしてdata.exist列を新規作成する。
library(lineworkmaps)
library(ggthemes)
## Warning: replacing previous import by 'scales::alpha' when loading
## 'ggthemes'
library(viridis)
jp <- linework_map(linework_set = "elmer_casual", fortified = TRUE) %$%
.[COUNTRY == "JP" & Name != "Japan",]
df.pref %<>%
mutate(ISO3166_2 = str_pad(seq(1:47), 2, pad = 0),
data.exist = ifelse(is.na(opendata), yes = 0, no = 1)) %>%
left_join(., jp, by = "ISO3166_2")
## Warning in left_join_impl(x, y, by$x, by$y): joining factor and character
## vector, coercing into character vector
jp$Name %>% droplevels() %>% levels()
## [1] "Aichi" "Akita" "Aomori" "Chiba" "Ehime"
## [6] "Fukui" "Fukuoka" "Fukushima" "Gifu" "Gunma"
## [11] "Hiroshima" "Hokkaido" "Hyogo" "Ibaraki" "Ishikawa"
## [16] "Iwate" "Kagawa" "Kagoshima" "Kanagawa" "Kochi"
## [21] "Kumamoto" "Kyoto" "Mie" "Miyagi" "Miyazaki"
## [26] "Nagano" "Nagasaki" "Nara" "Niigata" "Oita"
## [31] "Okayama" "Osaka" "Saga" "Saitama" "Shiga"
## [36] "Shimane" "Shizuoka" "Tochigi" "Tokushima" "Tokyo"
## [41] "Tottori" "Toyama" "Wakayama" "Yamagata" "Yamaguchi"
## [46] "Yamanashi"
途中で気がついたのだけど、lineworkmapsの地図では沖縄県が描画されない。なお沖縄県は私が調べたところまだオープンデータを公開していないようである。
gg <- ggplot()
gg <- gg + geom_map(data = jp, map = jp,
aes(x = long, y = lat, map_id = id), size = 0.5)
gg <- gg + geom_map(data = df.pref,
map = jp,
aes(fill = data.exist, map_id = id, stat = "identity"))
gg <- gg + scale_fill_viridis()
gg <- gg + coord_map(project = "albers", lat0 = 47.5, lat1 = 28.5)
gg <- gg + theme_map()
gg <- gg + theme(legend.position = "right")
gg
データの有無はカテゴリー変数なので、離散値のスケールにしないといけないけど、ひとまずはこれで勘弁。黄色で塗られている都道府県がオープンデータの整備が済んでいるところ。早く全都道府県が黄色になって欲しい。
47都道府県のうち55.32%と思っていたよりもオープンデータを公開している都道府県が多かった。行政ごとにオープンデータに対しる意識の違いがなんとなくあるような気がした。栃木県や和歌山県、徳島県などはハジマタ感がある。提供されているデータもセンサスデータが基本だが行政ごとの特徴があったりして面白い。
提供しているデータの種類は.xlsや.pdfが多いが、.csvもあってRを使えば十分に扱えるだろう。また時間があるときに触ってみたい。