mapgl パッケージ
の紹介

2025-09-27 FOSS4G Hokkaido 2025

湯谷啓明

ドーモ!

湯谷啓明

  • 株式会社 MIERUNE 所属
  • GIS エンジニア見習いになって半年
  • 好きな言語:R、忍殺語

今日話すこと

  • R で MapLibre の地図を作る方法
  • 具体的なパッケージの使い方よりは「こんなのもあるよ」という紹介
  • R ユーザーの人もそうじゃない人も気楽に聞いてください

今日話さないこと(お詫び)

  • ストーリーマップ機能
  • Turf.jsによるクライアントサイドでの処理

Shiny(R のウェブアプリケーションフレームワーク)前提の話になって、ちょっとマニアックすぎるので省略。 気になる人は懇親会で話しましょう!

ちなみに Python の場合

ちなみに Python の場合

Rでインタラクティブな地図といえば?

Rでインタラクティブな地図といえば

  • leaflet パッケージ先生
  • 10年前から変わらない存在感
  • でも、そろそろ MapLibre を使いたくないですか??

mapgl パッケージ

mapgl パッケージ

  • GIS データをインタラクティブに可視化するための R パッケージ
  • MapLibre GL JS か Mapbox GL JS が選べる

基本的な使い方

  • maplibre(): MapLibre GL JS で地図を表示
  • mapboxgl(): Mapbox GL JS で地図を表示
    • API キーが必要

地図を表示

maplibre()

Globe projection

maplibre() |>
  set_projection("globe")

中心とズームレベルを指定

maplibre(
  center = c(141.359719, 43.071776),
  zoom = 13
)

中心とズームレベルを指定

スタイルを指定

# 地理院地図のスタイル
gsi_style <-
  "https://gsi-cyberjapan.github.io/gsivectortile-mapbox-gl-js/pale.json"

maplibre(
  style = gsi_style,
  center = c(141.359719, 43.071776),
  zoom = 13
)

スタイルを指定

傾けてみる

maplibre(
  style = gsi_style,
  center = c(141.359719, 43.071776),
  zoom = 16,
  pitch = 75,
  bearing = 136,
)

傾けてみる

動かしてみる

maplibre() |>
  set_projection("globe") |>
  fly_to(
    center = c(141.359719, 43.071776),
    zoom = 18,
    pitch = 75,
    bearing = 136
  )

(リロードしないと動かないかも…)

動かしてみる

データを表示する

  • Rで生成したデータを表示する場合は、sf 形式で渡す
  • それ以外のデータソース(GeoJSON とか PMTiles とか)も使える
  • ただ、ちょっとコードがお手軽じゃないかも…

データを表示する

  • 国土数値情報からダウンロードした都道府県地価調査(2025年)のデータ
map |>
  add_circle_layer(
    id = "chika",
    source = data,
    circle_radius = 8,
    circle_opacity = 0.7
  )

データを表示する

データを表示する

  • 色が欲しい…

色のマッピングをつくる

  • L02_006 が地価が入っているカラム
pal <- interpolate_palette(
  data = data,
  column = "L02_006",
  method = "quantile",
  n = 4,
  palette = scales::viridis_pal(option = "F", direction = -1)
)

色のマッピングを指定する

map |>
  add_circle_layer(
    id = "chika",
    source = data,
    circle_radius = 8,
    circle_opacity = 0.7,
    circle_color = pal$expression
  )

色のマッピングを指定する