8
12
2012
電子国土V4の背景地図のタイル形式
【追記】
国土地理院は2013年10月30日に従来の電子国土WEBシステムの仕様を変更し、『地理院地図』という形で新しいWEBマップシステムの公開を始めました.ここで紹介した内容は以前のWEBマップタイルの仕様について紹介していますが、新しいWEBマップシステムでもこの仕様はそのまま残されており、このまま使うことが可能です.【追記:7/20 2015】
国土地理院は既にこの旧式のURLスキームは廃止してしまったようです.現時点ではXYZ形式のURLのみが有効なようです.新しいWEBマップシステムの地図タイルは複雑で扱い難かった複雑なURL構造に対して、X,Y,Zの値を直接記述可能な単純なURL構造でもアクセスできるようにURLラッパーを被せただけです.勿論『地図院地図』の内容その物は以前のバージョンと大きく変わっています.
新しいタイル画像のURLスキーム: http://cyberjapandata.gsi.go.jp/xyz/std/{Z}/{X}/{Y}.png
詳細は、 国土地理院のヘルプページ『地理院タイルを用いた開発』をご覧下さい.
背景地図のタイリング方法について
電子国土V4での背景地図のタイリング方式が従来の緯度経度幅一定のタイル形式から、Google MapsなどのWEBマップシステムと共通のピクセル数固定方式に変更された事については既に何度か紹介しているが、国土地理院から正式な情報が提供されたので、再度情報を整理しておく.
背景地図に関するドキュメントは、「利用可能な背景地図等データの種類及び技術情報(固定ピクセル版)」に用意されている.
電子国土V4での背景地図の仕様を簡単に纏めると、
・タイル画像の画素数: 全てのタイルの画素数は 256 (W) x 256 (H) pixel 固定
・投影法: ”Sphere Mercator” 投影法 (WGS84/GRS80 の長半径を半径とした真球をメルカトル投影)
・ズームレベル: 5 〜 18 (日本近辺のみを扱うので、ズームレベル 0〜4 の画像タイルは用意されていない)
ズームレベル0のタイルは、西経180度~東経180度、北緯85.051128779807度~南緯85.051128779807度の範囲を
”Sphere Mercator”投影し、256×256ピクセルの1枚の画像で表したもの
・タイル画像命名規則: {タイルID}{拡張子}
タイルIDは{タイルX番号}{タイルY番号} を順に組み合わせた文字列で、
X,Yそれぞれ7桁のゼロパディング数字で現される.
X=7691, Y=5423 の場合は、タイルIDは “00076910005423” となる.
拡張子については、オルソ画像の場合は “.jpg” (JPEG形式)、それ以外は “.png” (PNG形式)
・背景地図供給サーバのURL構成
http://cyberjapandata.gsi.go.jp/sqras/all/{データID}/latest/
{ズームレベル}/{ディレクトリ}/{タイルID}{拡張子}
ディレクトリはタイルX番号の0~6番目の数字をそれぞれX0~X6、タイルY番号の0~6番目の
数字をそれぞれY0~Y6として、
{X0}{Y0}/{X1}{Y1}/{X2}{Y2}/{X3}{Y3}/{X4}{Y4}/{X5}{Y5}
のように構成する.
タイルIDが “00290110012939” の場合は、X0=0, Y0=0, X1=0, Y1=0, X2=2, Y2=1,
X3=9, Y3=2, X4=0, Y4=9, X5=1, Y5=3 なので、 “00/00/21/92/09/13” となる.
従って最終的なURLは、
http://cyberjapandata.gsi.go.jp/sqras/all/DJBMM/latest/15/00/00/21/92/09/13/00290110012939.png
となる.
このような複雑なディレクトリ構成にすることで、1ディレクトリ当たりのファイル数が100個以下に押さえられるという利点があるが、もっとシンプルなディレクトリ構成にした方が良いのではないだろうか.XYZの値からURLを構成するのがとても面倒だ.
主な背景地図として、以下の種類の地図データが供給されている.
・小縮尺地図(500万分の1 日本とその周辺) ズームレベル : 5、6、7、8
データID : “JAIS”
拡張子 : “.png”
・段彩陰影図(500万分の1 日本とその周辺) ズームレベル : 5、6、7、8
データID : “RELIEF”
拡張子 : “.png”
・小縮尺地図(100万分の1) ズームレベル : 9、10、11
データID : “BAFD1000K”
拡張子 : “.png”
・小縮尺地図(20万分の1) ズームレベル : 12、13、14
データID : “BAFD200K”
拡張子 : “.png”
・電子国土基本図(地図情報) ズームレベル : 15、16、17
データID : “DJBMM”
拡張子 : “.png”
・電子国土基本図(オルソ画像) ズームレベル : 15、16、17
データID : “DJBMO”
拡張子 : “.jpg”
・基盤地図情報 ズームレベル : 18
データID : “FGD”
拡張子 : “.png”
電子国土V4のタイルにはズームレベル 0〜4までの範囲は含まれていないので、代わりにOpenSteetMapのタイル画像の例を示す.下記のURLの x,y,z パラメータに数字を設定することで、任意の位置のタイル画像を表示させることが可能.x=28,y=12,z=5 で東日本エリアが表示される.
上記以外に b.tile.openstreetmap.org, c.tile.openstreetmap.org が利用可能
http://b.tile.openstreetmap.org/5/28/12.png [ Map data © OpenStreetMap contributors, CC BY-SA ]
ズームレベル:0 [全1枚][ Map data © OpenStreetMap contributors, CC BY-SA ]
ズームレベル:1 [全4枚][ Map data © OpenStreetMap contributors, CC BY-SA ]
ズームレベル:2 [全16枚][ Map data © OpenStreetMap contributors, CC BY-SA ]
Google Maps, Yahoo! Japan Map のタイルについて
注)下記に示すGoogle MapsやYahoo Japan MapのタイルのURLは公表されているものではなく、あくまでも私個人がWEBのアクセス情報から推定したものであることに注意して欲しい.Google やYahoo JapanはこれらのURLを通じて直接地図のタイル画像を取得することを許諾している訳ではないので、このURLにアクセスして地図タイルを利用する場合は各自で利用規約を調査した上で判断して欲しい.
・Google Maps API のライセンス [https://developers.google.com/maps/licensing?hl=ja]
Google MapsやYahoo Japan Mapでは、Static Map API(Javascriptによるインタラクティブな表示ではない静止画像タイプの地図)にアクセスすれば任意のサイズの地図画像が得られるので、サイズを256ピクセルに固定してアクセスすれば任意の場所のタイル画像を得られるが、残念ながらXYZ形式ではなく、地図の中心座標(緯度、経度の十進値)を指定する方法なので、X,Yの値からタイルの中心の緯度経度の値を割り出さなければならない.
[ Google MapsのStatic Map APIのURLの例 ]
http://maps.googleapis.com/maps/api/staticmap?sensor=false&maptype=map¢er=35.544375,139.768317&zoom=17&size=256×256
この方法であれば、上記のGoogle Mapsの利用規約に違反しない限り公式なAPIによるアクセスなので、地図画像タイル(もどき)を取得することは問題無い.有料版のアプリケーションに組み込む事はBusiness版のライセンスが必要だが、無料版の公開アプリはどちらのライセンスに該当するのだろうか?無料で一般に配布したアプリであれば問題無さそうに思えるが、市販されている有料のアプリにエンドユーザが直接手を加えてGoogle Mapsを利用する場合はどうなるのだろうか?
Google Maps Tile URL: https://mt0.googleapis.com/vt?&x=0&y=0&z=0&src=apiv3&hl=ja
Yahoo Japan Map に関しても同じように直接地図のタイル画像にアクセスする事は可能であるが、規約上直接アクセス可能かどうかはハッキリしない.Yahoo! JavaScriptマップAPIで公開されているAPIの範疇では “ImageTileLayer” クラスの中に “getImageSrc(x, y, z)” というメソッドがあり、x,y,zの値からタイルイメージのURLを取得することは可能である.
http://m.map.srv.yimg.jp/m?&r=1&style=base:bold&x=14553&y=1732&z=15
困った事に、Yahoo Japan Map のXYZの座標系の仕様はGoogle MapsやOSMなどと異なるようで、Y座標およびZ座標(ズームレベル)の数値に互換性がないので注意する必要がある.詳細は、Yahoo Japan Developer Network内の YOLP(地図):タイル画像仕様 を参照されたい.
Yahoo Japan Map の座標系(ズームレベル 3)http://i.yimg.jp/images/map/yjdn/tile_name.png
・原点は経度-180度の北西の地点が原点
・xは経度-180度を基準に0からスタートする
・yは緯度0度を基準にこれより北の場合は0からスタート、南の場合は-1からスタート
・ズームレベルの数値は同じ縮尺の他の地図の数値よりも+1した値となる
一例として、羽田空港整備場付近のタイルを例としてXYZの数値の違いを表示してみると
[ Yahoo Japan Map ] http://m.map.srv.yimg.jp/m?&r=1&style=base:bold&x=14553&y=1732&z=15
[ Google Maps ] https://mts0.googleapis.com/vt?&src=apiv3&hl=ja&x=14553&y=6459&z=14
のように同じ場所のタイルのY,Zの数値が異なっていることに注意して欲しい.
ちなみに、Yahoo Japan Maps での Y座標ならびにズームレベル Zの値は下記の簡単な変換式、
Y = 2^(z-1) – y – 1
Z = z + 1
で求められる.(小文字はGoogle, OSMなどでの値)
・Yahoo Japan Map の背景地図のバリエーション
Yahoo Japan が提供している背景地図の種類の多さはダントツで、用途に応じて様々な種類を使い分け可能だ.地図そのものの見栄えや完成度の高さもGoogle Mapsよりも優れていると思うのだが、何故か世間一般ではGoogle Mapsに偏っているのが残念だ.
背景地図のバリエーションは、URLのパラメータ “style” の値に “base:standard” のように指定すれば良い.指定可能な値については、
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/js/reference/YLayer.html#StyleMapLayer
を参照して欲しい.
Yahoo Japanの一般向けの地図ページ http://map.yahoo.co.jp/maps で背景地図の切り替えができるようになっているので、どのような背景地図なのか知りたい場合はこちらで確認しておくのが良いだろう.
Yahoo Japan Map での背景地図切り替え画面
電子国土V4での基盤地図情報のタイル画像の例
縮尺1/36000 (ズームレベル:14)
縮尺1/18000 (ズームレベル:15)
縮尺1/9000(ズームレベル:16)
縮尺1/4500 (ズームレベル:17)
この背景地図等データは、国土地理院の電子国土Webシステムから提供されたものである