ブラウザで使えるベクターMBTilesビューアー
MBTilesファイルは、タイル化された地図を丸ごと1つのファイルにまとめたものです。中身は小さなSQLiteデータベースで、タイルを入れたテーブルと、その情報を入れたテーブルがあります。ベクターMBTilesにはMapbox Vector Tilesが入っています。道路、建物、川、境界とその属性を収めたコンパクトなバイナリのタイルで、地図アプリが自由にスタイルを付けられます。tippecanoe、Planetiler、OpenMapTiles、QGISなどのツールで作られ、多くのオフライン地図や自前で配信するMBTiles地図の土台になっています。
困るのは中身を見たいときです。パソコンではファイルを開けず、画像ビューアーでは何も見えず、オンラインのビューアーの多くはラスタータイルしか表示しません。ベクターMBTilesを見るには、ふつうタイルサーバー、スタイル、少しのJavaScript、あるいは本格的なGISソフトが必要です。このベクターMBTilesビューアーはそのすべてを省きます。ファイルをドロップすると、データベースを読み、ブラウザの中でベクタータイルをデコードし、レイヤーごとに色を変えて地図に描きます。
表示するだけでなく、検証するためのツールとしても作られています。地物をクリックして属性を読んだり、レイヤーの表示を切り替えたり、ズームレベルごとのタイルの大きさや最大のタイルを確認したり、MBTilesとベクタータイルの仕様に沿ってファイルをチェックしたりできます。最後に、表示範囲の地物をGeoJSONで出力したり、地図のPNGを保存したり、同僚や顧客に渡せる技術レポートをダウンロードしたりできます。私のおすすめは、タイルセットをサーバーに置く前にチェックを実行することです。「地図が真っ白」という問題の多くは、メタデータの行の不足やズーム範囲の誤りが原因で、公開前のほうがずっと簡単に直せます。
ベクターMBTilesビューアーでできること
ツールの機能を、使う順番に紹介します。
- ファイルを開く. .mbtilesファイルを地図にドラッグするか、「MBTilesを開く」をクリックします。300 MBまでのファイルは、SQLiteエンジンsql.jsでブラウザ内で開けます。「サンプルを試す」を押すと、国、湖、川、都市が入った小さな世界のタイルセットが読み込まれ、すぐに動作を確認できます。
- すぐに地図を表示. メタデータから範囲と中心を読み取り、データの位置にズームします。各レイヤーはそれぞれの色でキャンバスに描かれます。ポリゴンは淡い塗り、ラインは線、ポイントは円です。water、landuse、building、transportation、placeなどのよくあるレイヤー名には自然な色が付きます。
- レイヤーを操作する. 「レイヤー」タブには、メタデータとタイルにあるすべてのレイヤーが、ジオメトリの種類、サンプル内の地物の数、値の例を添えた全フィールドとともに表示されます。レイヤーの表示を切り替えたり、「これだけ」で1つのレイヤーだけを表示したり、色の四角をクリックして好きな色を選んだりできます。
- クリックして地物を調べる. 地図をクリックすると、その場所にある表示中のレイヤーの地物が、レイヤー、ジオメトリの種類、ID、全属性とともにカードに表示されます。地物は地図上で強調され、GeoJSONとしてコピーしたり、タイル全体を生の.pbfファイルとして保存したりできます。
- ファイル情報を読む. 「ファイル情報」タブでは、メタデータをわかりやすく表示します。名前、説明、出典、バージョン、形式、圧縮、ズーム範囲、範囲、中心、作成ツール(例:tippecanoe)、ファイルとタイルデータのサイズです。
- タイルを確認する. 「タイル」タブでは、ズームレベルごとのタイル数、合計・平均・最大のサイズと、ファイル内で最大の10枚のタイルを確認できます。「表示」でそのタイルに移動します。タイル境界をオンにすると、各タイルの境界がz/x/yとサイズ付きで描かれます。
- チェックを実行する. 「チェック」タブでは、tilesテーブル、メタデータ、形式、圧縮、jsonのvector_layers一覧、メタデータにないレイヤー、範囲、中心、実際のタイルとズーム範囲の一致、500 KBを超えるタイル、出典を検証します。各チェックはOK、警告、エラーで示され、わかりやすい説明が付きます。
- データ以上に拡大する. ベクタータイルは最後のズームレベルを超えて拡大してもくっきりしたままなので、ビューアーは最も深いタイルを拡大して描き続けます(「オーバーズーム」)。最初のズームレベルより縮小しているときは、拡大するよう案内が出ます。
- 表示を調整する. 塗りの不透明度と線の太さを変え、地名ラベルをオン・オフし、位置の目安に道路地図や衛星地図を追加できます。背景地図がなければ、他のサーバーからは何も読み込まれません。
- 出力する. 表示中の地物をGeoJSONで、地図の表示をPNGで、メタデータをJSONで保存できます。チェック結果、レイヤー、フィールド、タイル統計、改善の提案をまとめた技術レポートもダウンロードできます。
ファイルはブラウザのタブの中で、JavaScriptとWebAssemblyによって読み込まれます。アップロードされることはないので、非公開のデータやライセンス付きのデータでも安心して使えます。
ベクターMBTilesファイルの見方(ステップごと)
サンプルの世界タイルセット(Natural Earthのデータ、ズーム0〜5)を使った実際の例です。

ツールは空の地図とドロップ領域で開きます。.mbtilesファイルをドラッグするか、クリックしてファイルを選ぶか、「サンプルを試す」を押します。

ビューアーはSQLiteデータベースを読み、範囲にズームして4つのレイヤーを描きます。国は灰色の塗り、湖は青、川は青い線、都市はラベル付きの赤い点です。

「レイヤー」タブには、各レイヤーのジオメトリ、サンプル内の地物、値の例付きの全フィールドが表示されます。ここでは川と都市だけを表示し、ヨーロッパ周辺を見ています。

都市をクリックします。カードにはレイヤー、ジオメトリの種類、ID、全属性が表示され、地物が強調されます。GeoJSONとしてコピーしたり、元のタイルを保存したりできます。

「ファイル情報」タブでは、metadataテーブルの内容を、名前、出典、形式、gzip圧縮、ズーム0〜5、範囲、中心、ファイルサイズとしてわかりやすく表示します。

「タイル」タブには、ズームレベルごとのタイル数とサイズ、最大のタイルが表示されます。タイル境界をオンにすると、各タイルの境界がz/x/yと保存サイズ付きで描かれます。

「チェック」タブでは、MBTilesとベクタータイルのルールに沿ってファイルを検証します。サンプルはすべてのチェックに合格します。実際のファイルでは警告が1つか2つ出ることが多く、それぞれに説明が付きます。

技術レポートには、概要、地図のプレビュー、チェック結果、メタデータ、全レイヤーとフィールド、タイル統計、改善の提案が1ページにまとめられています。印刷するか、PDFとして保存できます。
MBTilesファイルの開き方:選べる方法
MBTilesファイルを開く方法はいくつかあります。中身を見たいだけか、検証したいか、プロジェクトで使いたいかによって、適した方法が変わります。
- ブラウザで、このビューアーを使う. ベクターファイルの中身を最も早く確認できる方法です。インストールもサーバーも不要で、Windows、Mac、Linux、タブレットで使えます。タイルセットの確認、属性の確認、レポートの共有に向いています。ラスターMBTiles(PNG、JPEG、WebPのタイル)は、このサイトのMBTilesビューアーを使ってください。
- QGISで開く. QGIS 3.14以降はベクターMBTilesを直接開けます。ファイルを地図にドラッグするか、「レイヤー」→「レイヤーを追加」→「ベクタータイルレイヤーを追加」を使います。ラスターMBTilesは「レイヤー」→「レイヤーを追加」→「ラスタレイヤを追加」で開きます。他のGISデータと組み合わせたいときに便利です。
- タイルサーバーで配信する. TileServer GL、Martin、mbtileserverはMBTilesファイルを読み、タイルをHTTPで配信します。これによりMapLibre GL JS、Mapbox GL JS、LeafletのWeb地図から使えます。MBTiles地図は多くの場合この方法で公開されます。
- PMTilesにする. ファイルをPMTilesに変換し(このサイトに無料の変換ツールがあります)、その1つのファイルを静的ホスティングやオブジェクトストレージに置きます。MapLibreはタイルサーバーなしで直接読めます。
- スマートフォンやGPS端末で使う. 多くのオフライン地図アプリは、通信なしで使うためにMBTilesファイルを読み込めます。アプリが想定するタイル形式を確認してください。ラスタータイルしか受け付けないアプリもあります。
- データベースとして開く. MBTilesはSQLiteなので、DB Browser for SQLiteやsqlite3のコマンドラインでも開けます。見えるのはテーブルとバイナリのデータで地図ではありませんが、メタデータの行を直すときに便利です。
どの方法でも共通する点があります。MBTilesファイルに入っているのはデータで、スタイルではありません。レイヤーの色はアプリごとに決まります。このビューアーは色を自動で選ぶので、先にスタイルを書かなくても構造を確認できます。
ビューアーがベクタータイルを読んで描く仕組み
ベクターMBTilesを開くには4つの段階があります。SQLiteデータベースを読み、必要なタイルを探し、展開してデコードし、描画します。実際に何が起きているかを数式とともに説明します。
1. MBTilesのデータベース
MBTilesファイルは、2つの必須テーブルを持つSQLiteデータベースです。ビューアーはWebAssemblyにコンパイルされたSQLiteであるsql.jsでこれをメモリに読み込み、通常のSQLを実行します:
CREATE TABLE metadata (name text, value text);
CREATE TABLE tiles (zoom_level integer, tile_column integer,
tile_row integer, tile_data blob);
metadataの行: name, format = pbf, minzoom, maxzoom, bounds,
center, attribution, description, json, …
統計: SELECT zoom_level, COUNT(*), SUM(LENGTH(tile_data)),
MAX(LENGTH(tile_data)) FROM tiles GROUP BY zoom_level一部のファイルは、空の海のような同じタイルを1回だけ保存するために、tiles を2つのテーブル(map と images)のビューとして持っています。ビューアーはどちらの構成にも対応し、ファイルがどちらを使っているかを表示します。
2. 地図上の位置からタイルの行へ:TMSの反転
Web地図はタイルを上から数えます(行0が北)。MBTilesは古いTMS方式に従い、行を下から数えます。そのため、タイルを取り出すたびに行を反転します:
n = 2^z ズームzでの一辺のタイル数 x = ⌊(λ + 180) / 360 × n⌋ y = ⌊(1 − ln(tan φ + sec φ) / π) / 2 × n⌋ Web地図の行(北から) tile_row = n − 1 − y MBTilesの行(南から) 例 z = 5, x = 16, y = 10 → tile_row = 32 − 1 − 10 = 21
この反転を忘れるのは、自作のMBTilesリーダーで最もよくある不具合です。北半球があるはずの場所に南半球が表示されます。自分のアプリでデータが上下逆や違う場所に描かれる場合は、まずここを確認してください。
3. タイルを展開する
ベクタータイルはほぼ必ず圧縮されています。ビューアーはタイルの先頭のバイトで圧縮方式を判定し、ブラウザ内蔵のDecompressionStreamで展開します:
1F 8B … gzip (ほとんどのファイル:tippecanoe、Planetiler、OpenMapTiles) 78 01/5E/9C/DA zlib (一部の古いツール) それ以外 圧縮なし 89 50 4E 47 PNG ┐ FF D8 JPEG ├ ラスタータイル:ベクターファイルではない 52 49 46 46 WebP ┘
同じ判定で、メタデータが間違っていてもラスターMBTilesを見分けられます。その場合は空の地図を表示する代わりに、ラスタービューアーへ案内します。
4. protobufをデコードする
Mapbox Vector TileはProtocol Buffersのメッセージです。数値はvarintとして保存されます。1バイトに7ビットを使い、8ビット目は「まだバイトが続く」ことを示します。符号付きの値はzigzag符号化を使い、小さな負の数も短く収めます:
varint 300 = 1010 1100 0000 0010 → 0101100 + 0000010 × 128 = 300
zigzag 0 → 0, −1 → 1, 1 → 2, −2 → 3, 2 → 4
デコード: n = (z >>> 1) ^ −(z & 1)
Tile { layers = 3 }
Layer { name = 1, features = 2, keys = 3, values = 4, extent = 5, version = 15 }
Feature { id = 1, tags = 2, type = 3, geometry = 4 }
tags [キーの番号, 値の番号, キーの番号, 値の番号, …]属性の名前と値は、レイヤーごとに keys と values のリストに1回だけ保存されます。各地物は番号の組だけを持つので、ベクタータイルはとても小さくなります。ビューアーのデコーダーは仕様をもとに書かれ、Mapboxのリファレンスデコーダーと35万件以上の地物で比較して、違いが1つもないことを確認しています。
5. ジオメトリのコマンド
ジオメトリはコマンドの並びです。各コマンドの整数にはコマンドIDと回数が入り、その後に続く引数はzigzag符号化された、前の点からの相対値です。座標はタイル単位で、標準ではタイルの端から端までが0〜4096です(「extent」):
コマンド = (回数 << 3) | id MoveTo = 1, LineTo = 2, ClosePath = 7
9 = (1 << 3) | 1 MoveTo、1点
引数 50, 34 → +25, +17 カーソル (25, 17)
18 = (2 << 3) | 2 LineTo、2点
引数 0, 18, 18, 0 → (25, 26), (34, 26)
15 = (1 << 3) | 7 ClosePath
ポリゴンのリング: 面積 > 0 外側のリング(画面上で時計回り)
面積 < 0 穴
面積 = ½ Σ (x_j·y_i − x_i·y_j) 座標法(ガウスの面積公式)、yは下向きリングの面積の符号で外側のリングと穴を区別するので、国の中にある湖は、描画でもGeoJSONへの出力でも穴のまま保たれます。
6. 描画、縮尺、オーバーズーム
地図の各タイルは256 × 256ピクセルのキャンバスです(高解像度の画面では512)。タイル単位をピクセルに換算し、最も深いズームレベルを超えた場合は親タイルを拡大してずらします。これをオーバーズームと呼びます:
縮尺 = 256 × f / extent f = 2^(z_地図 − z_データ) ずらし量 = (x mod f, y mod f) × 256 表示する親タイルの部分 例 データはz 14まで、地図はz 16 f = 4、縮尺 = 256 × 4 / 4096 = 1単位あたり0.25 px 地図のタイル (x, y) はデータのタイル (⌊x/4⌋, ⌊y/4⌋) を使う
データがベクターなので、線は新しい縮尺で描き直され、拡大したラスタータイルと違ってくっきりしたままです。線の太さと点の大きさは縮尺で割るので、どのズームレベルでも画面上の大きさは変わりません。
7. 地物のクリック判定
クリックすると、ビューアーはカーソルの下にあるデータのタイルを探し、クリック位置をタイル単位に換算し、表示中のレイヤーの地物を上のレイヤーから順に調べます:
1ピクセルあたりの単位 = extent / (256 × 2^(z_地図 − z_データ))
ポイント 距離 ≤ 7 px なら選択
ライン 線分までの距離 ≤ 5 px なら選択
d² = |p − a − t(b − a)|², t = clamp(((p − a)·(b − a)) / |b − a|², 0, 1)
ポリゴン 点から出した半直線がリングと奇数回交われば選択正確な判定の前に外接矩形ですばやく絞り込むので、数万の地物を含むタイルでもすぐに結果が出ます。
8. タイルサイズの目安
大きなタイルは地図を遅くします。何かが表示される前に、各タイルをダウンロードし、展開し、デコードする必要があるからです。tippecanoeは標準でタイルを500 KBまでに制限しており、同じ500 KBの上限はベクタータイルのサービスで広く使われています。ビューアーは1つのSQLですべてのタイルを測り、上限を超えるズームレベルに印を付けます:
保存サイズ = LENGTH(tile_data) バイト(圧縮されたまま) 平均サイズ = SUM(サイズ) / COUNT(*) ズームレベルごと カバー率 = タイル数 / 4^z 世界全体のグリッドに対する割合 目安 最大のタイル < 500 KB (512,000バイト)
実際には、最大のタイルは中間のズームレベルで、建物や道路が密集した都市部に現れることが多いです。単純化で間引かれる前に、多くの地物が集まるためです。「最大のタイル」の一覧からその場所に直接移動できます。
MBTilesと出力形式の詳細
MBTilesファイルの中身、ベクターとラスターのMBTilesの違い、このビューアーからダウンロードできる各ファイルの内容を説明します。
ベクターMBTiles .mbtiles
MBTiles 1.3の仕様に沿ったSQLiteデータベースで、format = pbf です。各タイルはgzipで圧縮されたMapbox Vector Tileで、名前付きのレイヤーを1つ以上持ちます。メタデータの json 行にはレイヤーとフィールドの一覧があり、tippecanoeは地物の数や属性値を含む tilestats も追加します。
metadata.json = {
"vector_layers": [
{ "id": "cities", "minzoom": 0, "maxzoom": 5,
"fields": { "name": "String", "pop_max": "Number" } } ],
"tilestats": { "layerCount": 1, "layers": [ … ] }
}ベクターMBTilesは対象範囲の割にサイズが小さく、自由にスタイルを付けられ、どのズームでもくっきり表示されます。完成した地図に見せるには、レンダラー(MapLibre、Mapbox GL、QGIS、またはこのビューアー)とスタイルが必要です。
ラスターMBTiles .mbtiles
データベースの構成は同じですが、各タイルは完成した画像(PNG、JPEG、WebP)で、多くは256 × 256ピクセルです。スタイルがピクセルに焼き込まれているので、どこで見ても同じ地図になりますが、スタイルの変更や属性の検索はできず、最後のズームレベルを超えるとぼやけます。
このビューアーは画像のシグネチャでラスターファイルを見分け、それに合わせて作られたこのサイトのラスターMBTilesビューアーへ案内します。
GeoJSON(表示範囲) .geojson
現在の表示範囲を覆うタイルにある、表示中のレイヤーのすべての地物を、現在のデータのズームレベルで、WGS84のRFC 7946 FeatureCollectionとして出力します。各地物は元の属性に加えて _layer と _tile の2つを持ちます。ポリゴンは穴とともにPolygonまたはMultiPolygonにまとめられます。
{ "type": "Feature", "id": 812,
"properties": { "name": "Lyon", "pop_max": 1423000,
"_layer": "cities", "_tile": "5/16/11" },
"geometry": { "type": "Point", "coordinates": [4.8320114, 45.7578137] } }地物は保存されているとおりタイルの境界で切れているので、長い道路はいくつかの断片になることがあります。1回の出力は最大64枚のタイルまでです。拡大すると、狭い範囲をより詳しく出力できます。
PNG(表示範囲) .png
地図の画面に見えているとおりのベクターレイヤーの画像です。白い背景に、ファイル名とズームレベルを示すタイトルバーと、メタデータの出典が入ります。
資料、不具合報告、顧客向けのちょっとしたプレビューに便利です。背景地図は含まれないので、他者の画像の権利を気にする必要はありません。
メタデータ(JSON) .json
metadataテーブルのすべての行(json 行は本物のJSONに変換)と、ズームレベルごとのタイル統計、タイルの中で見つかったレイヤーの一覧です。
タイルセットの2つのバージョンを比べたり、vector_layersの一覧をMapLibreのスタイルに写したりするときに役立ちます。
タイル(.pbf) .pbf
クリックした場所のベクタータイル1枚を、展開した状態で保存します。タイルサーバーが展開後に送る内容とまったく同じです。ファイル名にはz/x/yが入ります。
他のツール(例:vt2geojson やprotobufビューアー)に渡して、1枚のタイルを詳しく調べられます。
技術レポート .html
1つのHTMLページに、ファイルの概要、地図のプレビュー、すべてのチェック結果、metadataテーブル全体、ジオメトリの種類とフィールドを含むレイヤー、ズームレベルごとのタイル、最大のタイル、改善の提案、ファイルの使い方をまとめます。
PDFにきれいに印刷できます。チケットに添付したり、納品物に付けたりすれば、受け取った人はタイルセットを開かなくても中身がわかります。
すべての出力は、開いたファイルからブラウザの中で作られます。サーバーには何も送られません。
ベクターMBTilesビューアーを使う人
ベクタータイルはデータと地図の間にあるので、さまざまな立場の人が中身を確認する必要があります。
- Web地図の開発者. MapLibreやMapbox GLのスタイルを書く前に、どのレイヤーがあるか、フィールドの名前、どのズームレベルからデータが現れるかを確認できます。フィールド一覧と値の例があれば、推測に頼らずに済みます。
- GISアナリスト. tippecanoe、Planetiler、QGISで出力したファイルに、正しい属性とズーム範囲で必要なものが入っているかを、納品前に確認できます。
- DevOpsとタイルサーバーの管理者. TileServer GL、Martin、CDNに展開する前に、大きすぎるタイル、メタデータの不足、ズーム範囲の誤りを見つけ、レポートを記録として残せます。
- オフライン・現地での地図作業. タブレットや現場用端末に入れるMBTiles地図が、正しい範囲とズームレベルを含んでいるかを、圏外になる前に確認できます。
- データの購入者とレビュー担当者. 供給元のベクタータイルセットを、何もインストールせずに確認し、属性を見て、レポートを返せます。
- 学生と先生. タイル境界をオンにし、ズームレベルごとのタイルサイズを比べ、オーバーズームで線がくっきりしたままになる様子を見て、ベクタータイルの実際の仕組みを学べます。
- オープンデータの公開者. タイルセットを公開する前に、メタデータの出典、範囲、説明を確認し、利用者に正しい出典と最初の表示位置が伝わるようにできます。
- サポートと不具合報告. 地図に欠けや壊れた地物があれば、そのタイルを探して.pbfとして保存し、レポートと一緒にチケットに添付できます。
MBTilesとベクタータイルについてのよくある質問
MBTilesファイルとこのビューアーについて、よく寄せられる20の質問です。
1. MBTilesファイルとは何ですか?
MBTilesファイルは、地図のタイルを保存するSQLiteデータベースです。タイルごとに1行(ズーム、列、行、タイルのデータ)を持つ tiles テーブルと、名前、形式、ズーム範囲、範囲などを持つ metadata テーブルがあります。1つのファイルにタイル地図全体を入れられるので、コピー、共有、オフラインでの利用が簡単です。
2. ベクターとラスターのMBTilesの違いは何ですか?
ラスターMBTilesは完成した画像(PNG、JPEG、WebP)を保存します。ベクターMBTilesはMapbox Vector Tiles、つまり地図アプリが自分でスタイルを付けて描くジオメトリと属性を保存します。ベクターのほうが同じ範囲でもサイズが小さく、どのズームでもくっきりしていて、スタイルの変更や属性の検索ができます。format 行が pbf ならベクターです。
3. MBTilesファイルはどうやって開きますか?
ベクターファイルの中身を手早く見るなら、このビューアーにドロップしてください。インストールもアップロードも不要です。QGIS 3.14以降では、ファイルを地図にドラッグするか、「レイヤー」→「レイヤーを追加」→「ベクタータイルレイヤーを追加」を使います。Webサイトで公開するなら、TileServer GL、Martin、mbtileserverで配信するか、PMTilesに変換します。上の「MBTilesファイルの開き方」で各方法を比べています。
4. このベクターMBTilesビューアーは無料ですか?
はい。無料で、アカウント不要、1日のファイル数の制限もなく、出力に透かしも入りません。すべてブラウザの中で動くので、サーバーの費用がかかりません。
5. ファイルはどこかにアップロードされますか?
いいえ。ファイルはFileReaderで読み込まれ、ブラウザのタブの中でsql.js(WebAssembly版のSQLite)によって開かれます。タイルのデコードと描画もそこで行われます。背景地図をオンにしたときだけ、ブラウザがその提供元から道路や衛星のタイルを読み込みます。ファイル自体は手元に残ります。
6. ファイルの大きさに上限はありますか?
300 MBまでです。データベース全体をブラウザのメモリに読み込むため、非常に大きなファイルには多くのメモリが必要です。スマートフォンやタブレットでは100 MB未満のファイルが快適です。地球全体のタイルセットには、タイルサーバーかQGISを使ってください。
7. ファイルを開いても地図が空なのはなぜですか?
多くの場合、地図がファイルの最初のズームレベルより縮小されています。都市のタイルセットはズーム10から始まることがあり、その場合は拡大するよう案内が出ます。ほかに、メタデータの bounds の誤り(違う場所にズームする)や、ファイル内のラスタータイルが原因のこともあります。「チェック」タブで原因がわかります。
8. オーバーズームとは何ですか?
タイルセットには最後のズームレベルがあり、14であることが多いです。それ以上拡大すると、ビューアーはズーム14のタイルを使い続け、大きく描きます。ベクターデータは描き直されるので、線はくっきりしたままです。多くの背景地図がズーム14で終わるのはこのためで、タイルには道路レベルの表示に十分な情報があります。
9. 地物がタイルの境界で切れるのはなぜですか?
各ベクタータイルには、タイルの中に入る部分と小さな余白だけが保存されます。長い川や大きな国は、タイルごとに多くの断片として保存されます。地図のレンダラーは断片を並べて描くので、切れ目は見えません。GeoJSONの出力では断片は別々のままで、それぞれに _tile 属性が付きます。
10. メタデータにないレイヤーがあるのはなぜですか?
メタデータの json 行は、ファイルを作ったツールが書き込みます。ファイルを編集した場合、複数のソースから結合した場合、スクリプトで作った場合などは、タイルにはあるのに一覧にないレイヤーが生じることがあります。ビューアーはタイルのサンプルをデコードしてそのようなレイヤーも見つけ、「メタデータに記載なし」と表示します。
11. MBTilesのTMS方式とは何ですか?
MBTilesは古いTMS規格と同じく、タイルの行を下(南)から数えます。一方、Web地図は上(北)から数えます。MBTilesを読むプログラムは行を反転する必要があります:tile_row = 2^z − 1 − y。MBTilesの地図が上下逆や違う半球に表示される場合、この反転の抜けが原因と考えられます。
12. ベクタータイルはどのくらいの大きさにすべきですか?
どのタイルも500 KB未満に収めてください。tippecanoeの標準の上限で、タイルサービスでもよく使われる上限です。良いタイルの多くは10〜200 KBです。「タイル」タブでズームレベルごとの最大のタイルがわかり、レポートで小さくする方法が提案されます。
13. このビューアーでMBTilesファイルを編集できますか?
いいえ、読み取り専用です。データを変えるには、元のデータ(GeoJSON、シェープファイル、データベース)を編集し、tippecanoe、Planetiler、QGISでタイルを作り直してください。メタデータの行を直すなら、DB Browser for SQLiteでファイルを開き、metadata テーブルを編集します。
14. MBTilesをGeoJSONに変換できますか?
地図の一部なら可能です。その範囲に拡大して「GeoJSON(表示範囲)」を押すと、表示範囲のタイルにある表示中のレイヤーが、1回に最大64枚のタイル分出力されます。タイルセット全体なら、元のデータから出力するほうがきれいです。タイルは単純化され、境界で切られているためです。
15. MBTilesをPMTilesに変換できますか?
はい、このサイトの無料のMBTiles→PMTiles変換ツールでできます。PMTilesは1つのファイルで、MapLibreはタイルサーバーなしでどの静的ホスティングからでも読めます。中のタイルはまったく同じです。
16. MBTilesファイルに地図のスタイルは入っていますか?
いいえ。ベクターMBTilesに入っているのはデータだけで、色、線の太さ、ラベルはスタイル(多くはMapLibreやMapboxのスタイルJSON)で決まります。このビューアーはレイヤー名から自動で色を選ぶので、構造をすぐに確認できます。
17. ベクターMBTilesはどのツールで作れますか?
よく使われるのは、tippecanoe(GeoJSONやCSVから)、PlanetilerとOpenMapTiles(OpenStreetMapから)、QGIS(XYZタイルの生成/ベクタータイルの出力)、GDALのMVTドライバーです。ファイルに記録されていれば、「ファイル情報」タブに作成ツールが表示されます。
18. tilestatsとは何ですか?
tilestatsは、tippecanoeが json メタデータに書き込む情報です。各レイヤーの地物の数を数え、属性の名前、型、最大100個の値の例を記録します。tilestatsがあれば、ビューアーは各レイヤーの地物の総数を表示します。
19. ここでラスターMBTilesを見られますか?
このページはベクタータイル用です。ラスターのファイルを開くと、ビューアーは画像のタイルであることを見分け、PNG、JPEG、WebPのタイルを表示できるこのサイトのMBTilesビューアーへのリンクを表示します。
20. スマートフォンやタブレットでも使えますか?
はい。iOS、Android、Windows、macOS、Linuxの最新のブラウザで使えます。スマートフォンでは小さめのファイル(100 MB未満)を使い、全画面版で広く表示し、地物をタップして調べてください。
仕様、ソフトウェア、データの出典
このビューアーは、オープンな仕様とソフトウェアで作られています:
- MBTiles Specification (Mapbox) · SpecificationMapboxのMBTiles仕様:ファイルのSQLiteの構成、TMSの行の順序、ビューアーが確認するメタデータの行。
- Mapbox Vector Tile Specification · SpecificationMapbox Vector Tileの仕様:デコーダーが従うprotobufの構成、ジオメトリのコマンド、リングの向きのルール。
- sql.js · MITWebAssemblyにコンパイルされたSQLite。ブラウザで.mbtilesデータベースを開くのに使います。
- Leaflet 1.9 · BSD-2-Clauseインタラクティブ地図と、タイルを描くキャンバスのグリッドレイヤー。
- Natural Earth · Public domainサンプルのタイルセット(1:50mの国、湖、川、都市)の作成に使ったパブリックドメインのデータ。
- Protomaps (hosted by KONAKTIVE), CARTO, OpenStreetMap, Esri World Imagery · ODbL and provider terms任意の背景地図:KONAKTIVEがホストする独自のベクタータイル(予備としてCARTOとOpenStreetMap)と、Esri World Imagery。
ベクタータイルのデコーダー、レンダラー、チェック、すべての出力は当サイトのために書かれたもので、すべてブラウザの中で動きます。
関連するタイルとGISファイルのツール
チェックはMBTiles 1.3とMapbox Vector Tile 2.1の仕様、そして一般的な慣行に基づいています。合格しても、すべての地図アプリがファイルを受け付けることを保証するものではありません。 Sample data: Natural Earth. Optional base maps © OpenStreetMap contributors, Protomaps (hosted by KONAKTIVE), CARTO, Esri.
