1 of 14

Martinタイルサーバー入門

〜このために作ったテンプレートを添えて〜

MapLibre Meetup #01

Kanahiro Iguchi (MapLibre User Group Japan)

2 of 14

Speaker

Kanahiro Iguchi - GIS/OSS Enthusiast

  • MIERUNE Inc.
  • MapLibre Voting Member
  • MapLibre User Group Japan

3 of 14

2023年2月に単著「現場のプロがわかりやすく教える位置情報エンジニア養成講座」を出版しました。Web地図のこれまでとこれからのトレンドが学べます。

ベクトルタイルやMapLibre GL JSへ言及している日本唯一の書籍のはずです。後半の実践編ではMapLibre GL JSを用いた位置情報アプリケーションを開発します。

4 of 14

きょうの発表

  1. Martinタイルサーバーの紹介
  2. テンプレートに沿って使い方を説明

5 of 14

6 of 14

Martin: Vector Tile Server

  • Rust/Actixで書かれたベクトルタイルサーバー
  • 以前はurbicaというorganizationで開発されていたが、MapLibreに移管�

機能はいくつかある中、最も重要なことは:

PostGIS(PostgreSQL)のテーブルをベクトルタイルとして配信出来ること

7 of 14

地図タイル

  • 地球(のほぼ)全体を正方形に描画し、無数に分割したものをタイルと呼ぶ
  • 巨大なデータから必要最小限のデータを効率よく配信するための仕組み
  • 詳しくは:

8 of 14

ベクトルタイル配信とPostGIS

  • ベクトルタイルの最も一般的な配信方法は、あらかじめ全てのタイルを作成しておくもの(静的配信)
  • 最もシンプルで、最高のパフォーマンスが得られるが:
    • 原典データに変更が発生した場合、タイルを再作成しなければならない
    • タイル生成はそれなりのコストを要するので、頻繁に再作成できない�
  • Martinを用いて、DBのデータを動的にタイル化することで、常に最新のデータを配信出来る
    • リクエスト時に要するコストは静的配信より遥かに大きいことに注意
    • このあたりの議論は以下が詳しい:

9 of 14

その他の機能

  • MBTiles/PMTilesのサポート(タイル配信)
  • sprite(アイコンなどのアセット)の動的生成・配信
    • SVGをフォルダに配置しておくだけで、spriteが配信され
  • glyph(フォント)の動的生成・配信
      • 10/31にリリースされたv0.10.0で追加された機能�

(MapLibre Styleに関する全ての配信を担おうとしていることがわかる)

※spriteとglyphを動的に配信出来ることがとても嬉しいのは界隈の人には伝わるはず

10 of 14

Martinの使い方

  • 起動方法は大きく分けて二つ:
    • Dockerイメージの利用(推奨)
    • コマンドライン
  • Dockerイメージとビルド済みバイナリが配布されているので利用は容易
  • いずれの場合も、最も簡単にはPostGISへのconnection stringを変数として渡して起動するだけ

11 of 14

Martinの使い方

  • PostGISのほか、MBTiles/PMTilesの配信、SVGをSpriteとして配信することも可能
  • だが、その場合は設定ファイルを記述し読み込ませる方がわかりやすい

これら全ての機能を簡単に試せるテンプレートを作成しました!

https://github.com/mug-jp/martin-starter

12 of 14

Martinの使い方

  • docker-compose.ymlを用いてサーバーを起動するだけで利用可能
  • 設定ファイルの書き方や機能を紹介するためのコード

13 of 14

Martinの使い方

  • 実際にmartin-starterを使ってみる

14 of 14

まとめ

  • MartinはMapLibreの中でも活発に開発されているソフトウェア!
  • シンプルに作られていて使いやすい・高速!
  • mug-jp/martin-starterを見れば使い方がすぐわかる!ぜひ試してみてください
    • mug-jpのorgには他にも色々あるのでチェックしてみてください