leafletでの地理空間マップ

shinydashboard で作るダッシュボード

Png Kee Seng

Researcher

leafletプロットの構造

  • 最初のレイヤーはleaflet()
    • ggplot()と同様
  • addTiles()で世界地図を追加
    • ggplotのx、yに相当
  • 新しいレイヤーは%>%で追加
    • ggplotの+に相当
library(leaflet)

m <- leaflet() %>%
addTiles()

空のleafletキャンバス。

世界地図を追加したleafletキャンバス。

shinydashboard で作るダッシュボード

地図プロバイダの種類

  • addProviderTiles()を追加
  • プロバイダ例
    • MtbMap:マウンテンバイク向け
    • Esri.NatGeoWorldMap:National Geo提供
    • Stamen.Toner:白黒
m %>%
  addProviderTiles(providers$MtbMap)
m %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap)
m %>% 
  addProviderTiles(providers$Stamen.Toner)

MtbMapプロバイダのleaflet。

Nat Geoプロバイダのleaflet。

Stamen Tonerプロバイダのleaflet。

1 https://rstudio.github.io/leaflet/basemaps.html
shinydashboard で作るダッシュボード

leafletでポリゴンを追加

  • addPolygon()でポリゴンを追加
    • 必要なのはsfオブジェクト

leafletでポリゴンを追加。

leaflet() %>% 
  addTiles() %>% 

addPolygons(data=london_poly,
col="red",
label=~Name)
shinydashboard で作るダッシュボード

leafletでポリラインを追加

  • 経度・緯度が必要
    • $geometry[[1]]に含まれる
  • 折れ線はaddPolylines()で描画
    • 経度・緯度は第1・第2列
loop_geo <- london_loop$geometry[[1]]

capital_geo <- london_capital$geometry[[1]]
m2 <- leaflet() %>% 
  addTiles() %>% 
  addPolygons(data = london_poly, col="red", 
                  label=~Name) %>% 

addPolylines(loop_geo[,1], loop_geo[,2]) %>% addPolylines(capital_geo[,1], capital_geo[,2], color = "orange")
shinydashboard で作るダッシュボード

leafletでマーカーを追加

  • マーカーを追加可能
    • addCircleMarkers():各点を円で表現
    • addMarkers():各点を通常のマーカーで表現
m2 %>%
  addCircleMarkers(data = listings_geo,
                   label = ~name)
m2 %>%
  addMarkers(data = listings_geo,
                   label = ~name)

leafletのサークルマーカー。

leafletの通常マーカー。

shinydashboard で作るダッシュボード

markerClusterOptions

  • markerClusterOptions()を追加可能
    • 値を集約表示

クラスタオプション付きマーカー。

m2 %>%
  addMarkers(data = listings_geo,

clusterOptions = markerClusterOptions())
shinydashboard で作るダッシュボード

ユーザー選択

  • ユーザー入力用にaddLayersControl()を追加
  • baseGroups:地図プロバイダを切替
    • 各プロバイダタイルにラベル付与
    • baseGroupsはそのラベルのベクトル
  • overlayGroups:レイヤーの表示/非表示を切替
    • 各レイヤーにラベル付与
    • overlayGroupsはそのラベルのベクトル
m_london <- leaflet(london_poly) %>% 

addTiles(group="Default") %>% addProviderTiles(providers$Stamen.Toner,
group = "Toner") %>%
addProviderTiles(providers$Esri.NatGeoWorldMap,
group = "Nat Geo") %>%
addPolygons(col="red", label=~Name,
group = "Ward") %>%
addPolylines(loop_geo[,1], loop_geo[,2],
group = "London loop") %>%
addPolylines(capital_geo[,1], capital_geo[,2], labelOptions = labelOptions(noHide = TRUE), color = "orange",
group = "Capital ring", ) %>%
addMarkers(data = listings_geo, clusterOptions = markerClusterOptions(),
group = "Listings") %>%
addLayersControl(
baseGroups = c("Default", "Toner", "Nat Geo"),
overlayGroups = c("Ward","Listings", "London loop", "Capital loop"))
shinydashboard で作るダッシュボード

ユーザー選択(レンダー)

ユーザー選択付きのleafletマップ。

shinydashboard で作るダッシュボード

¡Vamos a practicar!

shinydashboard で作るダッシュボード

Preparing Video For Download...