使ってみよう! Bing API/SDK

第10回 使ってみよう! Bing Maps REST Services(2)

この記事を読むのに必要な時間:およそ 7.5 分

タイル画像

タイル画像を得るには,メタデータのImageUrl要素の値を使用します。URLの{quadkey}{culture}部分に適切な値を指定することでタイル画像のURLを作成します。

航空写真のメタデータのImageUrl要素の値は次のようになっています。

  • http://{subdomain}.tiles.virtualearth.net/tiles/a{quadkey}.jpeg?g=580&mkt={culture}&token={token}

経緯度を指定した場合に得られるURLにも{culture}などの文字列が含まれています。URL内に登場するこれらの値は次の通りです。

{subdomain}

{subdomain}は,負荷分散のため使用されているサブドメイン名です。t0やt1などImageUrlSubdomains要素の値のいずれかを指定します。

{quadkey}

{quadkey}は,QuadKeysと呼ばれるタイルの番号です。指定した経緯度が含まれるタイル画像情報を取得した場合,この{quadkey}部分には「1330021123012310220」のように値が格納されています。

QuadKeysは,タイルの地図上の位置とズームレベルによって決まります。Bing Mapsの場合,ズームレベルが1のとき図9のように2x2のタイルで構成されています。ズームレベルが1あがると1枚のタイルで表現されていた領域が2x2の4枚で表現されるようになります。

図9 タイル構成とQuadKeys

図9 タイル構成とQuadKeys

QuadKeysを求めるには,まずタイルの位置をXとYの座標で表します。図10のように横軸をX,縦軸をYとし,左上の座標を(0,0)とします。

図10 タイルの座標

図10 タイルの座標

上図の場合はズームレベルが3の場合です。座標(3,5)のQuadKyesは次のように求めます。

  1. X=3, Y=5 をズームレベルと同じ桁数の2進数で表現
    • X = 011
    • Y = 101
  2. 求めた2進数の値を合わせて4進数で表現
    (011101)2 = (213)4

求めた4進数の値,213がQuadKeysです。図9の値と一致していますね。このように求めたQuadKeysは,1段階前のズームレベルでの値に0~3が付いて表現される特徴があります。

ちなみに,QuadKeysを含む画像ファイル名は,⁠a1330021123012310220.jpeg」のようになり,先頭のアルファベットは,r, a, hのいずれかになり,道路地図・航空写真・航空写真+道路地図で異なっています。

{culture}

{culture}には,サービス地域を指定します。日本の場合はja-JP,米国の場合はen-USです。

{token}

{token}は,API利用者には必要のない値です。値を指定する必要はありません。

{tileId}

{tileId}は,概観図で使用するタイル番号です。概観図の場合,QuadKeysの規則に従って番号が付いていません。メタデータ取得時に指定した経緯度の概観図のタイルは,図11のようにTilesXとTilesY要素の値のタイル数で構成されています。左上から行と列に順に0から付けられている値がタイル番号です。

図11 概観図のタイル構成

図11 概観図のタイル構成

以上が,タイルのURL書式の内容と,タイルの構成についてでした。この内容から特定の地点のタイル画像の取得が可能になったかと思います。

おわりに

今回はここまでです。いかがでしたでしょうか。特にメタデータの取得は,使い方によってはおもしろい利用方法があるかもしれません。今回のImagery APIが利用されていたわけではありませんが,タイル画像を利用して,Silverlight版のBing Mapsがリリースされる以前から,SilverlightのDeep Zoom機能を利用して地図コントロールを作成しているオープンソースプロジェクトもありましたDeepEarth⁠。また,Google Mapsのタイル構成と似ているため,Google MapsとBing Mapsを組み合わせたサービスやアプリケーションも可能かもしれません。おもしろいアイデアが思い付いた方は,ぜひサービス作成にトライしてみてください。

次回もBing Maps REST Servicesを紹介予定です。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp