タイルサーバ (Zoom Level)
Googleマップのような地図アプリの地図データは非常に大きいものになっています。 表示したいエリアの地図情報を正しく表示するために、地図を分割して小さなさサイズにして複数に分割して保存しています。 この分割したデータを保存しているサーバの一つにタイルサーバがあります。
地図データをタイルのように並べるため、タイルサーバと呼ばれます。 タイルサーバは、地図アプリ上で拡大すると地図の詳細な情報を含んだデータを呼び出し表示し、縮小すると情報をサマライズしたものを呼び出して表示します。
拡大率と表示時範囲の関係性について
タイルサーバは、地図データの全エリアを表示したものをZoom Level 0と呼び1つのデータとして保存しています。 Zoom Level 0に地図にあるすべての情報を保存していると容量が非常に大きくなるので通常は、概要だけにサマライズして表示します。
Zoom Level 0のデータを、縦に半分、横に半分に分割した地図情報をZoom Level 1として4つのデータに分割して保存します。 さらに4分割したものを Zoom Level 2と呼び、全体を16分割したものになります。
理論的には、Zoom Levelは無限に大きくすることは出来ますが、通常はZoom Level 16~18ぐらいを目安に微細化を止めます。 Zoom Levelが大きいほど分割するデータ量が大きくなりサーバの負荷が大きくなるためです。
Zoom Level 0の表示範囲
特にZoom Level 0が地球全体の地図を利用しなければいけないということは決まっていません。 ただ多くのアプリケーションは、Zoom Level 0が全球をメルカトル図法で表示した地図であることを前提で設計しているので、Zoom Level 0が地球全体と考えることは大きく間違ってはいません。
地図データの保存方法
地図データは、Zoom Level と x軸の配列番号とy軸の配列番号の3種類のパラメータを元に取り出すことができます。 一般的なタイルサーバの場合、zoom Levelのディレクトリ名/x軸のディレクトリ名/y軸のファイル名の形で保存します。
必ずしも、この規則である必要が無いため、URLの引数などになっている場合もあります。
全球を表示する地図の場合、zoom Level 0の地図は、西経180度、北緯0度の地点が左上になります。 Zoom Levelは数字部分のみが入ります。 X軸は、Zoom Levelの左端が0からはじまりn番目という数字が入ります。 Y軸は、Zoom Levelの最上位が0から始まりn番目とという数字が入ります。
OSMのStandard Tile Layerの場合、Zoom Level、X軸、Y軸を以下の{z},{x},{y}に代入すると地図の画像ファイルが取得できます。
https://tile.openstreetmap.org/{z}/{x}/{y}.png
Zoome Level 15で東京駅周辺は、x軸が29105 y軸が12903になり、以下のURLに東京駅の西側の地図の画像が表示されます。
https://tile.openstreetmap.org/15/29105/12903.png
リンク先の画像の著作権は (c) OpenSteatMap です