mapglパッケージで地図を描画する

R
作者

伊東宏樹

公開

2025年6月7日

Kanazawa.R #3でのNONONOexeさんの発表にあったmapglパッケージをつかって地図を描画してみました。金沢駅周辺の地図に、バス停をマーカーとして表示するようにしました。

準備

mapglパッケージを読み込みます。

library(mapgl)

データ

国土数値情報のバス停留所データを使用します。2022年度石川県のデータをダウンロードして、P11-22_17.geojsondataディレクトリに置いておきました。

sfパッケージのst_read関数でこのファイルを読み込み、CRSをWGS84に変換します。さらに、事業者が北陸鉄道グループかどうかでデータを分けるようにしました。

bus_stop <- sf::st_read("data/P11-22_17.geojson") |>
  sf::st_transform(crs = "WGS84")
## Reading layer `P11-22_17' from data source 
##   `/Users/hiroki/Sites/www/posts/2025-06-07-mapgl/data/P11-22_17.geojson' 
##   using driver `GeoJSON'
## Simple feature collection with 4054 features and 73 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: 136.2517 ymin: 36.16634 xmax: 137.3298 ymax: 37.45275
## Geodetic CRS:  JGD2011

bus_stop_h <- bus_stop |>
  dplyr::filter(P11_002 == "北陸鉄道(株)" |
                  stringr::str_starts(P11_002, "北鉄"))

bus_stop_nh <-  bus_stop |>
  dplyr::filter(P11_002 != "北陸鉄道(株)" &
                  !stringr::str_starts(P11_002, "北鉄"))

描画

mapglパッケージのmaplibre関数を使って、MapLibre GLで金沢駅周辺の地図を描画します。さらに、事業者別に色を変えてマーカーを追加します。赤色が北陸鉄道グループ、青色がそれ以外(だいたいはJR西日本バス)です。

kanazawa_eki <- c(136.647893, 36.577984)

maplibre(style = maptiler_style("basic"),
         center = kanazawa_eki,
         zoom = 15.5,
         pitch = 45,
         bearing = 0) |>
  add_navigation_control() |>
  add_scale_control() |>
  add_markers(data = bus_stop_h,
              color = "red",
              popup = "P11_001") |>
  add_markers(data = bus_stop_nh,
              color = "blue",
              popup = "P11_001")

これでインタラクティブな地図が作成されるのですが、ここのサーバーでは操作ができないようなので、スクリーンショットを貼っておきます。