library(mapgl)
Kanazawa.R #3でのNONONOexeさんの発表にあったmapglパッケージをつかって地図を描画してみました。金沢駅周辺の地図に、バス停をマーカーとして表示するようにしました。
準備
mapglパッケージを読み込みます。
データ
国土数値情報のバス停留所データを使用します。2022年度石川県のデータをダウンロードして、P11-22_17.geojson
をdata
ディレクトリに置いておきました。
sfパッケージのst_read
関数でこのファイルを読み込み、CRSをWGS84に変換します。さらに、事業者が北陸鉄道グループかどうかでデータを分けるようにしました。
<- sf::st_read("data/P11-22_17.geojson") |>
bus_stop ::st_transform(crs = "WGS84")
sf## 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 |>
bus_stop_h ::filter(P11_002 == "北陸鉄道(株)" |
dplyr::str_starts(P11_002, "北鉄"))
stringr
<- bus_stop |>
bus_stop_nh ::filter(P11_002 != "北陸鉄道(株)" &
dplyr!stringr::str_starts(P11_002, "北鉄"))
描画
mapglパッケージのmaplibre関数を使って、MapLibre GLで金沢駅周辺の地図を描画します。さらに、事業者別に色を変えてマーカーを追加します。赤色が北陸鉄道グループ、青色がそれ以外(だいたいはJR西日本バス)です。
<- c(136.647893, 36.577984)
kanazawa_eki
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")
これでインタラクティブな地図が作成されるのですが、ここのサーバーでは操作ができないようなので、スクリーンショットを貼っておきます。