マップタイルとデータ量について

 本記事では、マップタイルの概念と、そのデータ量についてまとめます。

マップタイルについて

 マップタイルの概念は Google によって提案され、2005 年の Google Map サービス開始以来、多くのマップサービスで利用されてきました。マップタイルとは、広域を表示するときは荒くて面積が広い画像を読み込み、詳細を表示するときは緻密で面積の狭い画像を読み込むことで、オンラインマップの表示の高速化を図っています。

 まず、もっとも広域を表示する場合、すなわちズームレベル0の場合は、殆ど世界全体が収まる正方形の画像を読み込みます。このとき、正方形の一辺は 256 ピクセルとなっています。
 

図1.ズームレベル0のマップタイル
© OpenStreetMap contributions

 次に、ズームレベル1の場合、ズームレベル0の画像を縦横2等分した画像を読み込みます。このとき、各正方形の1辺は 256 ピクセルのままであり、赤道上は 256 × 2 = 512 ピクセルを使って表示することができます。

図2.ズームレベル1のマップタイル
© OpenStreetMap contributions

 ズームレベル2の場合は、ズームレベル1の画像を更に縦横2等分した画像を読み込みます。このようにすると、赤道上は 256 × 4 = 1024 ピクセルを使って表示できます。

図3. ズームレベル2のマップタイル
© OpenStreetMap contributions

 つまりズームレベルを上げていけば、ドンドン詳細なマップを表現できるようになります。ズームレベル17 で1ピクセルあたりの長さが1m 程度となり、ズームレベル 24 で 1 cm 以下となります。

図4.赤道における1ピクセルあたりの長さ


 マップ上に各タイルのズームレベルとタイル座標を表示するようにしてみました。
 

Leaflet

図5.各マップタイルのズームレベルと座標

マップタイルとデータ量

 マップタイルを使うとき、ズームレベルを大きくすると詳細な表現が可能になりますが、一方で必要なタイル数も急速に大きくなります。図6 はズームレベルと必要なタイル数の関係を示していますが、全世界でズームレベル0~18をカバーしようとすると 916 億枚ものタイルが必要になることが分かります。

図.ズームレベルと必要なタイル数


 ズームレベル0のタイルを参考にして、1枚あたりのタイルのデータ量を 8 kB とすると、単純計算で 8 kB × 916 億 = 732 TB ものストレージが必要ということになります。もちろん、海の部分などはデータ量が少なくなるものの、TB オーダのストレージが必要なのは間違いなさそうです。

 OpenStreetMapの利用者ガイド (p.105) によると、要求される PC スペックは以下の通りです。

  • 小規模なエリア用:10-20GB のストレージ、4GB のメモリ
  • 都市などの地域用:ストレージ 300GB 、メモリ 24GB のデュアルコアプロセッサ
  • 全世界用:クアッドコアプロセッサ


 データ量が大きくなるほど、高速なやりとりが要求されるわけで、一般的な PC (メモリ 4GB)だと数十 GB ぶんのマップタイルを扱うのが限界みたいです。おそらくストレージそのものよりも、実際にはメモリや CPU のスペックの方がボトルネックになってくるかと思います。

 なお、1枚あたりのタイルのデータ量を 8 kB とすると、10 GB ではズームレベル 10 までしかカバーすることができません。つまりそれと比較すると、 OSM 財団は超ハイスペックなサーバーを保有していて、おかげで僕らは地図を無償で利用できている、という事らしいです。
 

図. ズームレベル10のマップ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です