WebGISの構築4−tippecanoeによるmbtiles変換

今回は、下図赤枠部分に示す大阪市DMデータから変換したGeoJSONファイルをmbtiles形式に変換を説明します。
変換には、Mapbox社の提供するツール”Tippecanoe”(発音は”ティピカヌー”)を使用します。

今回構築する仕組みと本記事の範囲

Tippecanoeの導入と変換

では、今日の本題であるTippecanoeの概要を確認し導入、変換を行いましょう。

Tippecanoeとは

Tippecanoeは、Mapbox社のEric Fischer(エリック・フィッシャー)さんが、オープンソースソフトウェアで、GeoJSONファイルをmbtiles形式に変換します。

https://github.com/mapbox/tippecanoe

tipopecanoeを理解する上でのキーワードは、mvt、mbtiles、pbfの3つになります。

略称正式名説明仕様URL
mvtMapbox Vector TileMapbox社のベクトルタイルフォーマット。符号化方式にpbfを採用。https://github.com/madefor/vector-tile-spec
pbfProtocol BuffersGoogle社の符号化方式。5ビットのタグ、3ビットのタイプ、値の組み合わせで符号化を行う。https://developers.google.com/protocol-buffers/
mbtilesMapbox Vector Tile Set複数のmvtをSQLiteに収容したデータベース。1タイル1レコードで表現されmvtはgzip圧縮されBLOBカラム(バイナリラージオブジェクト)に収容される。配信用に使用する。https://github.com/mapbox/mbtiles-spec/blob/master/1.3/spec.md

参考ですが、Tippecanoeは以下のコマンドラインツールから構成されています。

  • tippecanoe    :GeoJSONからmvt、mbtilesへの変換(今回使用)
  • tippecanoe-decode:上記の逆変換
  • tile-join      :mbtiles同士の結合
  • tippecanoe-enumerate: mbtilesのタイル数確認
  • tippecanoe-json-tool :GeoJSONファイルからの情報の抽出

tippecanoeは、GeoJSONをpbfで符号化してmvt形式に変換し、それをgzip圧縮してmbtiles(SQLite形式)を作成しています。
図にすると以下のようになります。

Tippecanoeの機能の概要図

Tippecanoeの導入

今回は、Linuxサーバー(CentOS8)にtippecanoeを導入します。
git-hubからソースを取得し、yumコマンドにて2つの依存ライブラリを導入後、makeします。作業はルートユーザーで実施します。

$ git clone https://github.com/mapbox/tippecanoe.git
$ cd tippecanoe
$ yum install sqlite-devel.x86_64 sqlite-libs.x86_64
$ yum install zlib-devel.x86_64
$ yum install zlib.x86_64
$ make -j
$ make install

ビルドが成功すると、tippecanoeの実行モジュールが、/usr/local/bin/tippecanoeに作成されます。
一般ユーザーでもパスは通っていますので、動作確認(ヘルプ表示)すると以下のようになります。

$ tippecanoe –help
Usage: tippecanoe [options] [file.json …]
  Output tileset
         –output=output.mbtiles [–output-to-directory=…] [–force]
         [–allow-existing]
  Tileset description and attribution
         [–name=…] [–attribution=…] [–description=…]
  Input files and layer names
         [–layer=…] [–named-layer=…]
  Parallel processing of input
         [–read-parallel]

Tippecanoeによるmbtiles変換

Tippecanoeが導入できたらGeoJSONファイルをmbtiles形式に変換しましょう。
変換は、コマンドラインから以下のように実施します。(-drop-densest-as-neededは、図形の間引きオプションです)
私のVPS(さくらVPSの2CPU、メモリ1GB、SSD)では、5分ほどで完了しました。

$ tippecanoe -zg -o osaka.mbtiles –drop-densest-as-needed osaka.json

元々のGeoJSONファイル osaka.geojson のサイズは447MBでしたが、変換後のosaka.mbtilesは31.2MBとなりました。pbfによる符号化とgzip圧縮による二重の効果で元サイズの7%未満にまで圧縮されています。

まとめ

今回は、tippecanoeを使ってGeoJSONファイルをmbtiles形式に変換しました。
pbfとmvt、mbtilesの関連はs表象ややこしいので、今後説明していきます。

今回作成したmbtilesをブラウザで表示できるデモサイトを以下に用意していますので、よかったら訪問してください。

マウス右ボタンドラッグで3D表示できます。
なお、IE(インターネットエクスプローラ)では表示できませんので、Chromeなど他のブラウザをご利用ください。