マップタイルとは?概要とデータ量について
基礎的な内容にはなりますが、マップタイルについてまとめてみました。
Contents
マップタイルについて
マップタイルの概念は Google によって提案され、2005 年の Google Map サービス開始以来、多くの地図サービスで利用されてきました。マップタイルとは、広域を表示するときは荒くて面積が広い画像を読み込み、詳細を表示するときは緻密で面積の狭い画像を読み込むことで、オンライン地図の表示の高速化を図っています。
まず、もっとも広域を表示する場合、すなわちズームレベル0の場合は、殆ど世界全体が収まる正方形の画像を読み込みます。このとき、正方形の一辺は 256 ピクセルとなっています。
次に、ズームレベル1の場合、ズームレベル0の画像を縦横2等分した画像を読み込みます。このとき、各正方形の1辺は 256 ピクセルのままであり、赤道上は 256 × 2 = 512 ピクセルを使って表示することができます。
ズームレベル2の場合は、ズームレベル1の画像を更に縦横2等分した画像を読み込みます。このようにすると、赤道上は 256 × 4 = 1024 ピクセルを使って表示できます。
つまりズームレベルを上げていけば、ドンドン詳細な地図を表現できるようになります。ズームレベル17 で赤道上における1ピクセルあたりの長さが1m 程度となり、ズームレベル 24 で 1 cm 以下となります。詳細な地図になるほど表示範囲は狭くなるため、端末上で読み込む画像の枚数自体は大きく変化しません。
より具体的なイメージがわくように、マップ上に各タイルのズームレベルとタイル座標を表示するようにしてみました。
マップタイルは、北極/南極付近の描画を諦め、メルカトル図法の地図を正方形として扱い、分割を繰り返すことで、求めるズームレベルに対する地図表示を可能にする、シンプルで優れた手法だといえます(Web メルカトル図法等とも呼ばれます)。
Leaflet
以上の説明は、適宜画像を読み込んでいく「ラスタタイル」と呼ばれるマップタイルになります。このような方式だと、ズーム切り替え時の画像切り替わりがシームレスでない、ズームレベル固定のまま拡大するとぼやけてしまう、ファイルサイズが大きくなりがちになる、といった問題点もあります。そのため、近年ではベクトルデータをタイル状に区切った「ベクトルタイル」なるものも普及してきています。
タイルのデータ量について
マップタイルを使うとき、ズームレベルを大きくすると詳細な表現が可能になりますが、一方で必要なタイル数も急速に大きくなります。図6 はズームレベルと必要なタイル数の関係を示していますが、全世界でズームレベル0~18をカバーしようとすると 916 億枚ものタイルが必要になることが分かります。
OpenStreetMap のズームレベル0のタイルを参考にして、1枚あたりのタイルのデータ量を 8 kB とすると、単純計算で 8 kB × 916 億 = 732 TB ものストレージが必要ということになります。もちろん、海の部分などはデータ量が少なくなるものの、TB オーダのストレージは必要になってくると思います。
OpenStreetMapの利用者ガイド (p.109) によると、マップタイルを管理する上で要求されるサーバースペックは以下の通りです。
- 小規模なエリア用:10-20GB のストレージ、4GB のメモリ
- 都市などの地域用:ストレージ 300GB 、メモリ 24GB のデュアルコアプロセッサ
- 全世界用:クアッドコアプロセッサ
以前ラスタタイルをディレクトリ形式でズームレベル 10 までダウンロードしたことがありますが、その時の容量は 2.6 GB ぐらいでした。140 万タイルが必要なので、一枚当たり 2 kB ぐらいの計算になりますね。ちなみに、レンタルサーバーに設置しても、ズームレベル9 までしか表示されませんでした(原因は謎です)。
なお、前述のようにベクトルタイルにすると容量は小さくなります。ファイル数(タイル数)が非常に大きくなるとも説明しましたが、マップタイルを1ファイルにまとめてしまう、MBTiles や PMTiles といったファイル形式も存在します。以下に PMTiles の作成方法をまとめておりますので、興味がある方はご覧になってください。
国境線データの PMTiles を作成したところ、ズームレベル 5 で 4 MB、ズームレベル 8 で 45 MB、ズームレベル 10 で 221 MB、ズームレベル 11 で 318 MB、ズームレベル 14 で 4.96 GB でした。国境線に絞っているので当然軽くはなりますが、目的に合わせてうまくデータを絞っていくことで、ファイルは小さくできるかなと思います。
少し宣伝
当サイトは、PMTiles を積極的に使った、海外旅ブログまとめサイトとなっています。トップページに地図(PMTiles!)がありますが、地名を押すと画像が開き、画像を押すと関連記事一覧(クリック数順)が開きます。地名もその国で記事が多い都市の文字が大きくなるようにしています。ぜひ覗いてみてください。
当サイトで海外旅ブログを執筆することも可能です(もちろん無料です)! また既にブログをお持ちの方も、当サイトからリンクを貼ることができるようになっています。パントレ開発部までお気軽にお問い合わせください。
パントレ開発部