ふっけい安心マップ

ふっけい安心マップ」が公開された。 これは,福岡県警察が配信した「ふっけい安心メール」をもとに,発生場所周辺を地図で表示するものだ。

地図表示にはGoogle Mapのマイマップ機能を利用している。 また,地図で表示される場所は,発生場所をピンポイントで表示するものではなく, メール配信された住所(市区町村もしくは町丁字レベル)の代表地点にマークが表示される。

Google Mapのマイマップなので,上記サイトからKMLをダウンロードすることができる。 ~/Dataフォルダに,それぞれH27.kmlH28.kmlとして保存した。

KMLの読み込み

library(xml2)

kml <- read_xml("~/Data/H27.kml")
type <- xml_text(xml_find_all(kml, ".//d1:Data[@name='罪種']"))
station <- xml_text(xml_find_all(kml, ".//d1:Data[@name='配信警察署']"))
prefecture <- xml_text(xml_find_all(kml, ".//d1:Data[@name='県']"))
address <- xml_text(xml_find_all(kml, ".//d1:Data[@name='住所']"))

df1 <- data.frame(type=type, station=station, prefecture=prefecture, address=address, year="2015")

kml <- read_xml("~/Data/H28.kml")
type <- xml_text(xml_find_all(kml, ".//d1:Data[@name='罪種']"))
station <- xml_text(xml_find_all(kml, ".//d1:Data[@name='配信警察署']"))
prefecture <- xml_text(xml_find_all(kml, ".//d1:Data[@name='県']"))
address <- xml_text(xml_find_all(kml, ".//d1:Data[@name='住所']"))

df2 <- data.frame(type=type, station=station, prefecture=prefecture, address=address, year="2016")

dat <- rbind(df1, df2)
rm(list=c("df1", "df2"))

head(dat)
##           type  station prefecture            address year
## 1 公然わいせつ 筑紫野署     福岡県       筑紫野市桜台 2015
## 2 公然わいせつ   小郡署     福岡県       小郡市寺福童 2015
## 3 公然わいせつ 八幡西署     福岡県 八幡西区八枝四丁目 2015
## 4 公然わいせつ   粕屋署     福岡県 古賀市舞の里五丁目 2015
## 5 公然わいせつ 小倉北署     福岡県 小倉北区馬借三丁目 2015
## 6 公然わいせつ 小倉北署     福岡県     小倉北区香春口 2015

北九州市データの抽出

library(stringr)

ktq <- dat[str_detect(dat$address, "北九州市|小倉北区|小倉南区|門司区|戸畑区|若松区|八幡東区|八幡西区"),]
write.csv(ktq, "ktq.csv", row.names=FALSE, fileEncoding="cp932")

head(ktq)
##            type  station prefecture                address year
## 3  公然わいせつ 八幡西署     福岡県     八幡西区八枝四丁目 2015
## 5  公然わいせつ 小倉北署     福岡県     小倉北区馬借三丁目 2015
## 6  公然わいせつ 小倉北署     福岡県         小倉北区香春口 2015
## 13 公然わいせつ 小倉北署     福岡県         小倉北区中津口 2015
## 14 公然わいせつ 小倉南署     福岡県 小倉南区田原新町二丁目 2015
## 23 公然わいせつ 小倉南署     福岡県     小倉南区上曽根新町 2015

緯度経度データの取得(ジオコーディング)

ここでは,上で作成したktq.csvに対して,東京大学空間情報科学研究センターの「CSVアドレスマッチングサービス」を利用して住所の緯度経度を付与した。

得られたcsvファイルを,ktq_geo.csvとしてワーキングディレクトリに保存した。

地図の描画

ktq <- read.csv("ktq_geo.csv", fileEncoding="cp932")

library(leaflet)

map <- leaflet(ktq) %>% addTiles() %>% addCircleMarkers(~fX, ~fY, popup=~address, stroke=FALSE, radius=15, fillOpacity=0.4, clusterOptions=markerClusterOptions())
map