5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FOSS4GAdvent Calendar 2024

Day 23

ラスタータイルの作り方(2024年版)

Last updated at Posted at 2024-12-23

mug-jp_logo_01.png

はじめに

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冊書いましょう!

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?