
地理院タイルのしくみ — ズームレベルとタイル座標を学ぶ
GeoPrism JPやGeoDiveExaの背景地図には、国土地理院が公開している「地理院タイル」を使っています。地図アプリを開けばあたりまえに動いている背景地図ですが、その裏側では「タイル」という小さな正方形の画像を大量に組み合わせて1枚の地図に見せる、という仕組みが動いています。今回は、この地理院タイルの基本的なしくみ——ズームレベルとタイル座標——を学んでみます。
タイル地図の原理 — ピラミッド構造
地理院タイルをはじめとする現代の地図タイルは、ズームレベル0で地球全体を1枚の正方形画像として表現するところから始まります。
- ズームレベル0:地球全体を256×256ピクセルのタイル1枚で表現
- ズームレベル1:タイルの縦横をそれぞれ2分割し、2×2=4枚のタイルで表現
- ズームレベル2:さらに2分割し、4×4=16枚のタイルで表現
このように、ズームレベルが1つ上がるごとにタイルの枚数は縦横それぞれ2倍、全体では4倍に増えていきます。ズームレベルzのとき、タイルの枚数は 2^z × 2^z 枚です。拡大するほど広い範囲を細かいタイルの集合で描く、ピラミッド状の構造になっています。
タイル座標の計算 — 緯度経度からz/x/yへ
各タイルには、ズームレベル(z)・X座標・Y座標の3つの値からなる「タイル座標」が割り当てられています。
- 原点(0, 0)は、西経180度・北緯約85.0511度の北西端にあるタイル
- X座標は東へ向かうほど増加
- Y座標は南へ向かうほど増加
- ズームレベルzのとき、X・Yはそれぞれ 0 から 2^z − 1 までの範囲を取る
緯度経度からタイル座標を求める考え方は、地理院タイルもOpenStreetMapやGoogleマップと同じWebメルカトル図法ベースのXYZタイル方式に沿っています。おおまかな計算の流れは次のとおりです。
- 経度から X 座標を求める:経度を−180〜180度の範囲として、全体の何割の位置にあるかを 2^z 倍する
- 緯度から Y 座標を求める:Webメルカトル図法で緯度を南北方向の投影位置に変換し、同様に 2^z 倍する
- 得られた値の整数部分(切り捨て)が、そのタイルのX・Y座標になる
経度は単純な比例関係ですが、緯度側はメルカトル図法特有の対数関数を使う変換が入るため、経度ほど直感的ではありません。国土地理院は「タイル座標確認ページ」で、地図上をクリックするとその地点のズームレベル・X・Y座標を確認できるツールを公開しています。実際の地図で試してみると、ピラミッド構造とXYZ座標の対応関係が直感的につかめます。
地理院タイルの種類
地理院タイルは、標準地図だけでなく複数の種類が公開されています。GeoPrism JP・GeoDiveExaの背景地図選択でもおなじみのものが多くあります。
| 種類 | 内容 |
|---|---|
| 標準地図 | 道路・建物・地名などを含む一般的な地図 |
| 淡色地図 | 標準地図から色を薄くし、重ね合わせ用途に適した地図 |
| 写真(オルソ画像) | 航空写真・衛星写真ベースの地図 |
| 陰影起伏図 | 標高データから地形の陰影を表現した地図 |
| 色別標高図 | 標高を色分けで表現した地図 |
いずれも同じXYZタイル方式で提供されており、URLのパスに含まれる「データID」の部分({t})を切り替えることで、種類の異なるタイルを取得する仕組みになっています。
補足:Y座標が上下逆になる「TMS方式」との違い
地図タイルを扱っていると、同じズームレベル・X座標なのにY座標だけ地理院タイルと逆になっているデータに出会うことがあります。これは、タイル座標の原点をどこに置くかという「タイルスキーム」の違いによるものです。
| 方式 | 原点 | Y座標の向き | 代表例 |
|---|---|---|---|
| XYZ(Slippy Map方式) | 北西(左上) | 南に向かって増加 | 地理院タイル、Googleマップ、OpenStreetMap標準タイル、Mapbox |
| TMS(Tile Map Service方式) | 南西(左下) | 北に向かって増加 | OSGeo TMS仕様、MBTilesファイルの内部格納仕様、GeoServer/GeoWebCacheのデフォルト出力、gdal2tiles.pyのデフォルト出力 |
地理院タイルはXYZ方式なので、本記事で説明した「Y座標は南へ向かうほど増加」という向きになります。一方、GIS界隈で古くから使われてきたTMS仕様は逆に、南(下)を原点としてY座標が北へ向かって増加する向きです。両者は同じズームレベル・X座標でも、Y座標だけ上下反転した関係にあり、次の式で変換できます。
y(XYZ) = 2^z − 1 − y(TMS)
実務上の落とし穴としては、TMS方式で出力するツール(gdal2tiles.pyのデフォルト出力など)で作ったタイルを、そのまま地理院タイルやGoogleマップの上に重ねると上下逆に表示されてしまう、という点が挙げられます。国土地理院自身も、gdal2tilesベースでXYZ(地理院互換)のタイルを生成するためのツール「gdal2xyztiles.py」を公開しており、TMS→XYZの変換が実務でも意識されていることがうかがえます。なお、MBTilesファイルはファイル内部の格納形式こそTMS準拠ですが、多くの表示ライブラリは読み込み時にXYZへ自動変換するため、利用者が直接Y座標の向きを意識する場面は限られます。
利用規約と出典表記
地理院タイルをウェブサイトやアプリでリアルタイムに読み込んで表示する場合、出典を明示すれば申請不要で利用できます。出典表記は「国土地理院」または「地理院タイル」等と記載するのが基本です。GeoPrism JP・GeoDiveExaでも、背景地図として利用する際にはこの出典表記のルールに従っています。
なお、タイル画像を一括ダウンロードして別データセットとして再配布するなど、リアルタイム表示以外の用途で利用する場合は条件が異なることがあるため、用途に応じて国土地理院の公式ページで最新の規約を確認することをおすすめします。
アプリ実装の入口 — URLテンプレート
地理院タイルのURLは、原則として次の形式で命名されています。
https://cyberjapandata.gsi.go.jp/xyz/{データID}/{z}/{x}/{y}.{拡張子}
地図アプリの実装では、この {z}・{x}・{y} の部分を現在の表示範囲・ズームレベルに応じて計算し、必要なタイル画像だけをまとめて取得して並べる、という処理が行われています。GeoDiveExaのようにApple Mapに加えて背景地図を複数枚重ねて表示する機能も、このXYZタイル方式を土台にしています。
まとめ
- 地理院タイルは、ズームレベル0で地球全体を1枚に収め、ズームレベルが上がるごとに2×2倍ずつタイルを分割していくピラミッド構造を持つ。
- 各タイルはズームレベル(z)・X座標・Y座標からなるタイル座標で管理され、OpenStreetMapなどと同じWebメルカトルベースのXYZタイル方式に沿っている。
- 標準地図・淡色地図・写真・陰影起伏図など複数の種類が同じXYZタイル方式で提供されている。
- 地図タイルにはY座標の向きが逆の「TMS方式」も存在する。地理院タイルはXYZ方式(南へ向かって増加)で、TMS方式(北へ向かって増加)とは
y(XYZ) = 2^z − 1 − y(TMS)の関係で変換できる。 - リアルタイム表示であれば出典明示のみで申請不要。それ以外の用途は条件が異なる場合があるため、最新の規約を確認する。
「今見ている地図が、裏側では何枚のタイルの組み合わせでできているか」を意識すると、地図アプリの動きが少し違って見えてくるかもしれません。
出典
- 地理院タイルについて|国土地理院 https://maps.gsi.go.jp/development/siyou.html
- タイル座標確認ページ|国土地理院 https://maps.gsi.go.jp/development/tileCoordCheck.html
- 地理院タイル一覧|国土地理院 https://maps.gsi.go.jp/development/ichiran.html
- TMS – OpenStreetMap Wiki https://wiki.openstreetmap.org/wiki/TMS
- gdal2tiles — GDAL documentation https://gdal.org/en/stable/programs/gdal2tiles.html
- gdal2xyztiles.py(国土地理院)https://github.com/gsi-cyberjapan/gdal2xyztiles.py
- MBTiles — GDAL documentation https://gdal.org/en/stable/drivers/raster/mbtiles.html
関連記事
- 測地系ズレマップの使い方 — 地図をタップして座標変位を確認する(GeoPrism JP)
- 地図を3枚、1画面で — 背景地図の重ね合わせと透明度調整で現場資料を持ち歩かない(GeoDiveExa)
- 電波が届かない山中・地下でも座標変換 — オフラインで動く仕組み(GeoConverterPro)
- 富士山3776mは誰がどう測った — 最高峰の標高史(GeoPrism JP)
開発者より: アプリ・Kindle本・オープンソースの一覧は GitHub: amru195704 にまとめています。
お願い
本記事の情報は参考目的で掲載しており、正確性・完全性を保証するものではありません。誤記・不正確な情報がございましたら、コメント欄よりご指摘いただければ、確認のうえ修正いたします。
アプリを入手(App Store):GeoConverterPro(座標変換) | GeoPrism JP(測地系の可視化・学習)
コメントを残す