MBTiles 仕様

MBTilesとは、Mapboxが作成したタイルを格納するためのストレージ仕様です。

https://github.com/mapbox/mbtiles-spec

SQLiteを用いており、1つのファイルで多くのタイルを格納することができ、また転送時のコストもタイルに比べて少なくなります[^1}。

構成

ここではOpenMapTilesが出力するmbtilesを例に解説をします。

まず、SQLiteの構成から確認をします。これはsqlite3コマンドを用います。

sqlite3 data/tiles.mbtiles

.tablesコマンドで中身を確認します。

sqlite> .tables
geocoder_data  grid_key       grids          keymap         metadata
grid_data      grid_utfgrid   images         map            tiles

このうち、実際に利用されるのはtilesmetadataとなります。他にもgridsなどがありますが、これはUTFGrid Speciticationに利用されているもので、実際のところ使うことはないです2

tiles テーブル/ビュー

OpenMapTilesではtilesはViewとして実装されています。

sqlite> .schema tiles
CREATE VIEW tiles AS
    SELECT
        map.zoom_level AS zoom_level,
        map.tile_column AS tile_column,
        map.tile_row AS tile_row,
        images.tile_data AS tile_data
    FROM map
    JOIN images ON images.tile_id = map.tile_id
/* tiles(zoom_level,tile_column,tile_row,tile_data) */;

アプリケーションから呼び出す側では特にテーブルかビューかを気にする必要はありません。

1. 大量のタイルを転送するケースではOS側のファイルの処理に多くの負担がかかることがある。例えば100万タイルぐらいあるだけでファイルコピーだけでも恐ろしく時間がかかるなど。
2. きっぱりと書いていますが、本当に使ったことないのでしょうがない。

results matching ""

    No results matching ""