Rでインタラクティブな地図表示はmapviewで十分

たまたまmapviewパッケージのヘルプ(example)をみていたら、 mapview()関数を + でつないでいく方法があることを知った。

もう単なる地図表示だけとりあえず表示してインタラクティブに確認したい場合は これを使えば十分そう。

ただし、データ容量の大きい場合には注意がいりそうなコメントをどこかで見たので、 その点は注意が必要そうである。

library(mapview)
library(kokudosuuchi)
library(rgdal)
library(sf)
library(ggplot2)
library(dplyr)
library(sp)
rgdal::setCPLConfigOption("SHAPE_ENCODING", "")
# データの取得

get_url <- kokudosuuchi::getKSJURL(identifier="A38", prefCode = 18)
## 医療圏
A38 <- kokudosuuchi::getKSJData(zip_url = get_url$zipFileUrl)
A38 <- A38[[1]]

## 医療機関
get_url <- kokudosuuchi::getKSJURL(identifier="P04", prefCode = 18)
P04 <- kokudosuuchi::getKSJData(zip_url = get_url$zipFileUrl)
P04 <- P04[[1]]
plot(A38, axes=T)
plot(P04, add=T, col="green")

f:id:jerrarrdan:20170703232749p:plain

A38 <- A38 %>% st_as_sf() %>% st_set_crs(4612) %>% st_transform(2448)
P04 <- P04 %>% st_as_sf() %>% st_set_crs(4612) %>% st_transform(2448)
m <- mapview(A38, zcol="A38a_004") + mapview(P04, zcol="診療科目1")

原因不明だが、このmapview()関数の順序を逆にするとうまく表示されなかった。

mapshot(x = m, file = "fukui_iryou.png")

f:id:jerrarrdan:20170703232000p:plain

ついでに、医療圏域別に診療科目の開設?状況について表にしてみた。 人口別にみる必要があると覆うがかなり偏りのある分布になった。 徒歩圏内に医療がない地域も多そうで、医療の問題は大変そう。

歯科が多いのはよく聞くが、内科や小児科ってかなり多いんですね。 安心して子供を産める地域といえるのかもしれませんが、 小児科の数は少子化社会に対して妥当な数なんでしょうかね。

診療科目1に複数の科目が入力されているため切り分けて集計する。

st_intersection(x = P04, y = A38) %>%
  as.data.frame() %>%
  select(診療科目1, A38a_004) %>%
  tidyr::separate(col = 診療科目1, into = paste0("診療科目", 1:23), sep = " ") %>%
  mutate(rn = row.names(.)) %>% 
  gather(key = 科目, value = prof, starts_with("診療科目")) %>%
  xtabs(~A38a_004+prof, data = .) %>%
  as.data.frame() %>%
  spread(A38a_004, Freq) %>%
  mutate(= `奥越` + `丹南` + `福井・坂井` + `嶺南`) %>%
  arrange(desc(`計`))
prof 奥越 丹南 福井・坂井 嶺南
内科 25 93 191 62 371
歯科 21 64 158 46 289
小児科 15 56 113 34 218
消化器科 13 35 83 21 152
外科 10 39 64 23 136
整形外科 9 33 74 19 135
リハビリテーション 8 27 70 15 120
循環器科 8 27 72 11 118
皮膚科 7 25 45 17 94
呼吸器科 6 18 50 7 81
眼科 4 14 35 9 62
耳鼻咽喉科 4 11 31 11 57
放射線 3 21 25 8 57
小児歯科 0 12 31 6 49
肛門科 5 12 26 5 48
リウマチ科 2 7 34 4 47
泌尿器科 2 13 22 7 44
アレルギー科 4 2 30 5 41
胃腸科 2 12 19 4 37
精神科 1 4 22 9 36
矯正歯科 0 7 25 2 34
脳神経外科 1 9 18 4 32
産婦人科 2 6 16 6 30
神経内科 2 5 19 4 30
歯科口腔外科 0 4 20 5 29
麻酔科 2 7 15 5 29
形成外科 1 6 15 2 24
婦人科 1 8 9 5 23
心療内科 0 3 14 3 20
神経科 0 3 8 5 16
気管食道科 1 0 11 1 13
心臓血管外科 0 3 7 3 13
産科 0 3 6 1 10
呼吸器外科 0 1 4 3 8
性病科 0 4 1 0 5
美容外科 0 1 2 0 3
小児外科 0 0 2 0 2
皮膚泌尿器科 0 1 0 0 1