Yahoo地図をタイリングで貼り合わせて,連続した地図画像を作る方法について説明します.Yahoo地図API の,スタティックマップを使います

Yahoo地図のタイリング

スタティックマップの使い方は簡単で,
  • 中心の位置: 緯度(lat),経度(lon)
  • 縮尺レベル: z
  • 画像サイズ (width, height)

を指定して呼び出せば,地図画像を得ることができます. しかしこれを上下左右にきれいに並べようとすると,結構面倒です.

「上の画像」「右の画像」というような指定はできないので, どの位置を中心にすれば,重ならず,かつ隙間ができずに上下左右の画像を取れるのかを, 考えなければなりません.

このあたりの話を説明します.なお,ここで説明するのは私の試行錯誤の結果であり,Yahooの正式な内容ではありません.

地図画像と緯度経度の関係

画像幅を300pixelとしたときの,画像1枚当たりの緯度経度差

zpx(×1E6)py(×1E6)
916435201645000
10821760824320
11410880412160
12205440206080
13102720103040
145136051520
152568025760
161284012880
1764206440
1832203220
1916101610
20805805
21403402.6

※この値は,私が目視による試行錯誤で求めたものなので,不正確なので注意!

この表の意味は,

  • z=9で幅300pixelの地図画像を取得すると,その左端から右端までの間隔は1.64352度

ということです. ただし,上端から下端までの間隔も同じように1.645度かというと,そうはいかないのです.

地図画像の上端から下端までの間隔は,緯度によって変わります. そして,取得する画像高さを次の値にしてやれば,この表のpyと合います.

取得する画像高さ(pixel) = 画像幅(pixel) / cos(着目画像位置の緯度)
例えば,緯度=35.7869158度であれば,
高さ = 300 / cos(35.7869158度) = 370 (pixel)
で地図画像を取得すれば,上端から下端までが1.645度になります.余談ですが,この規則(緯度による間隔の変化)は,国土地理院の電子国土の地図にも当てはまります.

ymap2.png
4枚取得してタイリングした例

まぁ不正確不正確といいつつ,地図ロイドではこの方法を使っていますので,あの程度の精度にはなります.