{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 + )
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 + )
次回はadd_path()
を試す。