INPUTしたらOUTPUT!

忘れっぽいんでメモっとく

{mapdeck}を試してみる(3/5) Grid編

{mapdeck}を試すシリーズ3回目。今回はadd_grid()でgridの描画をしてみる。


データの準備

前回と同様に国土数値情報 交通流動量 パーソントリップ発生・集中量データを使用する。今回は単純に集中の全トリップを表示してみる。

> # (前回と同じ)
> # 国土数値情報 交通流動量 パーソントリップ発生・集中量データの取得
> library(dplyr)
> library(kokudosuuchi)
> dat.oc <- getKSJURL("S05-a") %>% 
+   # 東京都市圏に限定
+   filter(areaCode == "100") %>% 
+   select(zipFileUrl) %>% 
+   as.character() %>% 
+   getKSJData()
Using the cached zip file: /var/folders/xl/wm11q0z951nf03drkv4dsltw0000gn/T//Rtmpa9PJJI/S05-a-10_SYUTO_GML.zip

Details about this data can be found at http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-S05-a-v2_2.html
> 
> library(sf)
> sf.oc <- dat.oc[[1]] %>%
+   # 集中に絞り込み
+   filter(S05a_003 == "2") %>% 
+   # 全トリップ数を文字列から数値に変換, ポリゴンから中心点を算出
+   mutate(S05a_035 = as.numeric(S05a_035),
+          geometry = st_centroid(geometry)) %>% 
+   rename(zonecode = S05a_004,
+          all_trip = S05a_035) %>% 
+   select(zonecode, all_trip, geometry) %>% 
+   st_set_crs(4612) %>% 
+   st_transform(4326)
>
> glimpse(sf.oc)
Observations: 601
Variables: 3
$ zonecode <chr> "2019", "0123", "0124", "0130", "0131", "0132", "0133", "0134", "0135", "0136", "0137", "0138", "0210", "0211", "0212"...
$ all_trip <dbl> 15469, 255930, 33484, 130922, 273963, 133163, 177616, 111717, 103384, 113078, 209114, 213842, 375488, 408319, 113389,...
$ geometry <POINT [°]> POINT (139.7444 35.49041), POINT (139.7107 35.61144), POINT (139.763 35.59411), POINT (139.7135 35.59053), POIN...


gridの描画

{mapdeck}でGridの描画はadd_grid()で行う。引数は以下の通り。

引数 説明
map mapdeck地図オブジェクト
data レイヤで使用するデータ
lon 経度の列
lat 緯度の列
polyline ポリゴンの列
colour_range
cell_size 1メートルあたりのセルの大きさ
extruded セルを立体的にするかどうか
elevation_scale セルの高さの係数
auto_highlight マウスオーバー時にオートハイライトするか
layer_id レイヤID(同じタイプのレイヤを区別するために使用される)
digits 緯度・経度の小数点以下の桁数


上で準備したデータをmapdeck:: add_grid()で描画すると以下のようになる。

> library(googlePolylines)
> library(mapdeck)
> mapdeck(style = mapdeck_style("light"), zoom = 8, location = c(139.745433, 35.658581), pitch = 60) %>% 
+   add_grid(
+     data = sf.oc, 
+     polyline = "geometry", 
+     cell_size = 2500, 
+     elevation_scale = 25, 
+     layer_id = "grid_layer", 
+     auto_highlight = TRUE
+   )

f:id:tak95:20180925083746p:plain


add_grid()はセルの位置を緯度・経度でも指定できる。

> # 座標情報を取り出す
> df.oc <- sf.oc %>% 
+   st_coordinates() %>% 
+   as_tibble() %>% 
+   bind_cols(sf.oc) %>% 
+   st_as_sf() %>% 
+   st_set_geometry(NULL)
> 
> df.oc %>% 
+   head() %>% 
+   knitr::kable()
X Y zonecode all_trip
139.7444 35.49041 2019 15469
139.7107 35.61144 0123 255930
139.7630 35.59411 0124 33484
139.7135 35.59053 0130 130922
139.7186 35.57678 0131 273963
139.7462 35.57192 0132 133163

> mapdeck(style = mapdeck_style("light"), zoom = 8, location = c(139.745433, 35.658581)) %>% 
+   add_grid(
+     data = df.oc, 
+     lon = "X",
+     lat = "Y",
+     cell_size = 1000, 
+     extruded = FALSE,
+     layer_id = "grid_layer", 
+     auto_highlight = TRUE
+   )

f:id:tak95:20180925093729p:plain



次回はadd_path()を試す。