はじめに
MapLibreとは
MapLibre Official WebSite
https://maplibre.org
- Web地図に関するプロダクトをOSSとして開発・メンテナンスしているOrganizationです
- ブラウザ・モバイル向けの地図ライブラリおよび地図配信に関するツール群があります
MapLibre User Group Japan (MUG-JP) とは
MUG-JP Official Web Site
https://mug-jp.org/
- MapLibreプロダクトの開発者によるユーザーコミュニティです
- ナレッジの共有やイベントの開催による普及活動を行なっています
はじめに
筆者は過去に以下の記事を投稿しています
この数年で地図タイルの静的配信の世界観は大きく変わりました。主にPMTilesの台頭によって、ディレクトリ形式で配信するメリットがなくなっています。上記記事ではディレクトリ形式でのタイル生成を念頭に置いており内容が古くなってしまっています。なので本記事では、令和最新版のラスタータイル生成フローを紹介します。
ラスタータイルの生成フロー
入力はGeoTIFF、出力をPMTilesとします。
最もポピュラーは形式としてGeoTIFFで説明していますが、GDALがサポートする形式ならほかの形式でも問題ないでしょう。なお、GeoTIFFがRGB値を持っていることを前提としています。
1. GeoTIFF -> MBTiles
gdal_translateによるフォーマット変換でGeoTIFFをMBTilesへ変換出来ます。
gdal_translate -of MBTILES input.tif output.mbtiles-r bilinear -co BLOCKSIZE=512 -co TILE_FORMAT=WEBP
昨今、ラスタータイルは512^2の解像度がポピュラーですから、-co BLOCKSIZE=512
でそう設定しています。またナウいフォーマットとしてWebPを利用する設定も可能です(-co TILE_FORMAT
)。
このほかにも多様なオプションが利用可能です、以下のドキュメントを参照しましょう。
2. MBTiles内に各ズームレベルのタイルを生成する
gdal_translate
の変換だけでは、最大のズームレベルのタイルしか生成されません。最大のズームレベルのタイルを用いて、低いズームレベルの画像を生成する必要があります。ここではgdaladdoを利用します。gdaladdo
はいわゆるピラミッド画像を生成するためのプログラムです。「最大ズームのタイルを用いて低いズームのタイルを生成する」というのはまさにピラミッド画像でやっていることと同じですから、なんとなく腑に落ちそうです。
gdaladdo -r bilinear output.mbtiles
ここで重要なこととして、gdaladdo
は既存ファイルに対する破壊的変更を行うという点に留意してください。頑張ってGeoTIFFからMBTilesにしたのちに、たとえば誤ったパラメータでgdaladdo
を実行してしまうと、またGeoTIFFからやり直し…ということがありえます。実行前にMBTilesを複製しておくことをお勧めします。
3. MBTiles -> PMtiles
go-pmtiles
を利用すれば容易にPMTilesへ変換できます。releaseから最新バージョン・適切なアーキテクチャの実行ファイルをダウンロードしておきます。
Apple SiliconのmacならDarwin_arm64
Intel macならDarwin_x86_64
WindowsならWindows_x86_64
このあたりを選べばおそらく問題ありません。arm版WindowsやLinuxユーザーはご自身でわかると思うので割愛します。
./pmtiles convert output.mbtiles output.pmtiles
これでラスタータイルのPMTilesが得られるので、思い思いのラスタータイルサーバーを構築・配信しましょう。
宣伝
本記事で紹介したような手順で生成したタイルを配信するサーバーを実装する手法など、サーバーサイド技術を学びたい方向けに書いた書籍です。100冊書いましょう!