OnlineMapMaker logo

PMTiles ビューア

PMTiles(.pmtiles)ファイルをアップロードすると、地図上にタイルが描画され、メタデータを確認できます。処理はすべてブラウザ内で行われます。 全画面版を開く →

Rate this tool:
広告
広告
Loading viewer…
GISプロジェクトでお困りですか?サービスを見る

このツールでできること

PMTilesファイルは、地図タイルを1つにまとめたフラットなバイナリアーカイブです。データベースへの問い合わせやタイルサーバーの起動なしに、通常のHTTPバイトレンジリクエストだけで個々のタイルを取り出せるように設計されています。この効率のよさには代償もあります。人がファイルの中身をひと目で確認したいと思っても、地図ライブラリを自分で組み込むか、コマンドラインツールを使わない限り、.pmtilesファイルに何が入っているのかを確認する標準的な手段がありません。

このビューアは、その手間をなくします。ファイルを読み込むと、アーカイブの127バイトのヘッダーとJSONメタデータを読み取り、タイル形式、ズーム範囲、地理的な範囲、そしてファイルに含まれる名前・説明・出典表示を表示したうえで、画面に見えているすべてのタイルをLeafletの地図上に直接描画します。処理はすべてローカルで完結します。ファイルはブラウザのFile APIを使ってディスクから直接読み込まれ、データがサーバーへ送信されることは一切ありません。

広告
広告

ビューアがPMTilesファイルを読み取る仕組み

このビューアは、MapLibre GLでも使われているのと同じリーダー実装である公式の「pmtiles」JavaScriptライブラリを使用しています。これをFileベースのソースと組み合わせることで、HTTP経由ではなくアップロードされたファイルから直接バイトレンジを取り出せるようにしています。最初の読み取りでは、ヘッダーと圧縮されたタイルディレクトリだけを取得します。これだけで、1枚もタイルをデコードしないうちに、アーカイブのズーム範囲・範囲・形式をすぐに把握できます。

地図をパンしたりズームしたりすると、画面に見えている各タイルがz/x/y座標で要求されます。リーダーはその座標を、ヒルベルト曲線によるタイルIDで整理されたアーカイブのディレクトリの中から探し、二分探索でそのタイルのバイトオフセットと長さを特定し、該当するバイト部分だけを取得して、生のタイル画像を返します。この一連の処理を、小さなカスタムLeafletレイヤーがラップしているため、タイルは他の一般的なタイルソースと同じように地図上に自然に表示されます。アーカイブに記録された最大ズームレベルを超えて拡大した場合も、最も近い利用可能なタイルを再利用して表示します。

PMTilesの歴史と技術的な特徴

PMTilesは、オープンソースの地図プロジェクトであるProtomapsから生まれました。その根底にあるのは、地図の配信にサーバーは不要で、きちんと整理されたファイルと、バイトレンジを返せる何かさえあればよいという考え方です。ProtomapsはPMTilesの仕様自体をパブリックドメインとして公開しており、Go、JavaScript、Pythonなど複数の言語によるリファレンス実装(リーダーおよびライター)はBSD 3-Clauseライセンスで公開されています。このフォーマットはこれまでに複数回改訂されており、現在唯一実際に使われているバージョンであるv3では、以前のレイアウトに代わってヒルベルト曲線によるディレクトリ方式が採用されました。これは、当サイトのMBTilesからPMTilesへの変換ツールでも同じ方式が実装されています。

PMTilesが解決しようとしている課題は、主にコストと複雑さの問題です。世界全体をカバーするタイルピラミッドは、数億枚もの個別タイルを含むことがあります。Protomaps自身のドキュメントでは、3億枚のタイルを例に挙げており、これらを別々のオブジェクトとして保存すると、クラウドストレージのリクエスト料金だけで約1,500ドルかかり、アップロードに数日かかる場合があるとされています。1つのPMTilesアーカイブは、そのピラミッド全体を1つのファイルにまとめ、内部で同一のタイルを重複排除します(Protomapsによれば、世界規模のベクターベースマップでサイズを70%以上削減できるとされています)。さらに、S3、Cloudflare R2、GitHub Pagesのような単純な静的ファイルホスティングから、通常のHTTPレンジリクエストで個々のタイルを配信できるため、タイルサーバーもデータベースもサーバーレス関数も必要ありません。もちろん、前段にAWS LambdaやCloudflare Workersを置いて運用することも問題なくできます。

知っておくとよい技術的な事実がいくつかあります。公式のリーダーライブラリはJavaScript、Python、Dart、Kotlin/JVM、Go、C++、Rustに対応しており、フォーマット自体もMapLibre GL JS、Leaflet、OpenLayersで直接サポートされています。PMTilesは設計上、読み取り専用です。既存のアーカイブ内の一部のタイルだけを更新する方法はなく、更新するにはファイル全体を書き直す必要があります。これは、フォーマットのシンプルさと、1ファイル完結・バイトレンジ対応というレイアウトを実現するために意図的に選ばれたトレードオフです。ヘッダー自体は固定で127バイトしかなく、リーダーは1回のリクエストでこれを取得するだけで、タイルを1枚も読み込む前に、アーカイブのズーム範囲、範囲、タイル形式、タイル数を把握できます。

手順ガイド

PMTiles viewer with the Upload and Try Sample buttons visible on an empty map
ステップ1

「PMTilesをアップロード」をクリックして.pmtilesファイルを選択するか、パネルにファイルをドラッグ&ドロップします。あるいは「サンプルPMTilesを試す」をクリックすると、その場で生成された小さなサンプルを読み込めます。

Map showing rendered PMTiles tiles next to a file info panel with zoom range, bounds, and metadata
ステップ2

アーカイブ内のタイルがファイルから直接読み取られ、地図上に描画されます。ファイル情報パネルには、タイル数、形式、ズーム範囲、範囲、そしてファイル自身のヘッダーから取得したメタデータが表示されます。

広告
広告

実際の活用例

コードを書かずにPMTilesファイルを直接開くことが、実際に役立つ場面を紹介します。

  1. 公開前にPMTilesファイルを確認する。 PMTilesアーカイブを作成・変換した後、静的ファイルホストにアップロードする前に、ここで開いてズーム範囲、範囲、タイル形式が正しいことを確認できます。
  2. ダウンロードしたオープンデータセットを検証する。 大きなベースマップの一部を切り出した地域データなど、PMTiles形式で配布されているデータセットは、コードを書く前にそのまま開いて中身を確認できます。
  3. MBTilesからPMTilesへの変換結果を検証する。 当サイトのMBTilesからPMTilesへの変換ツールなどでファイルを変換した後、その結果をこのビューアに読み込むことで、すべてのタイルが正しい位置に変換されたかを確認できます。
  4. 地図アプリを公開する前にベースマップを確認する。 オフライン対応やセルフホスト型の地図を開発しているチームは、アプリが実際に読み込むPMTilesアーカイブそのものを事前に確認できます。誤ったズーム範囲や空のエリアも、公開前に発見できます。
  5. アーカイブされたタイルセットを点検する。 PMTilesは名前、説明、出典表示、範囲といったメタデータを自身の中に保持しているため、外部のドキュメントがなくても、何年も前に作られたアーカイブファイルの内容を特定・確認できます。

よくある質問

PMTilesファイルとは何ですか?

PMTilesは、地図タイルの完全なセットを1つにまとめたフラットなバイナリファイルです。ファイル内部の小さなディレクトリを通じてアドレス指定されているため、通常のHTTPレンジリクエストだけで個々のタイルを読み取れます。これにより、タイルサーバーやデータベースを使わずに、S3やGitHub Pagesのような静的ファイルホストからPMTilesをそのまま配信できます。

このビューアはどのタイル形式を地図上に表示できますか?

ラスタータイル形式であるPNG、JPEG、WebP、AVIFに対応しています。どの形式が使われているかはファイル自身のヘッダーに記録されており、ビューアはファイル拡張子から推測するのではなく、そのヘッダーを直接読み取ります。

ベクター(MVT)アーカイブで地図プレビューが表示されないのはなぜですか?

MVT(Mapbox Vector Tile)アーカイブには、完成済みの画像ではなく、ジオメトリとスタイル指定の情報が保存されています。これを描画するにはMapLibre GLのようなベクター地図レンダラーが必要ですが、Leafletを基盤とするこのサイトにはそれが含まれていません。ただし、メタデータ、ズーム範囲、範囲、ベクターレイヤー名は、アーカイブのヘッダーとJSONメタデータから直接取得できるため、そのまま表示されます。

ビューアは実際にどのようにファイルを読み取っていますか?

公式の「pmtiles」JavaScriptリーダーライブラリと、ブラウザのFile APIを組み合わせて使用しています。そのため、アップロードされたファイルは小さなバイト範囲単位でディスクから直接読み取られます。これは、同じライブラリがHTTP経由でリモートのアーカイブを読み取る場合とまったく同じ仕組みです。ファイルの取得元がURLではなくローカルファイルになっても、処理の仕組み自体は変わりません。

地図ツールを開かずに、タイル数、ズーム範囲、範囲を確認できますか?

できます。ファイル情報パネルは、ファイルの127バイトのヘッダーから、最小ズームと最大ズーム、地理的な範囲、アドレス指定されたタイル数を直接読み取って表示します。これらはすべて、タイルを1枚もデコードする前に取得されます。

アーカイブの最大ズームレベルを超えて拡大するとどうなりますか?

ビューアは、最も近い利用可能なタイルを再利用し、それを切り出して拡大表示します。これは、通常のWeb地図が画像データの端で見せるオーバーズーム時の挙動と同じで、空白のまま表示されることはありません。

ファイルサイズに上限はありますか?

アップロードできるファイルサイズは100 MBまでです。PMTilesはファイル全体をメモリに読み込むのではなく、バイトレンジによってタイルをアドレス指定するため、この上限に近い大きなアーカイブでも快適に閲覧できます。

アップロードしたPMTilesファイルはどこかに送信されますか?

いいえ。ファイルはブラウザ内でFile APIを使って完全に読み取られ、データがサーバーへ送信されることは一切ありません。

読み取り処理には公式のpmtiles JavaScriptライブラリを使用しています。ファイルがサーバーにアップロードされることはありません。地図タイル © OpenStreetMap contributors.

地図タイル © OpenStreetMap の貢献者、Protomapsで描画(ホスティング:KONAKTIVE)、予備としてCARTO。

Muhammad Gulraiz Khan、GIS専門家、KONAKTIVEおよびOnlineMapMaker.comの創業者

著者について

Muhammad Gulraiz Khan

GIS専門家・コンサルタント、KONAKTIVE創業者

Muhammad Gulraiz Khanは、エネルギー分野向けに地理空間ソリューションを提供してきた10年以上のプロフェッショナル経験を持つGIS専門家です。世界銀行、国際金融公社(IFC)、USAIDのプロジェクトにも携わってきました。彼はプロフェッショナル品質の地図作成ツールを誰もが無料で利用できるようにするため、OnlineMapMaker.comを立ち上げました。

広告
広告