From: Bing Maps Tile System

去年做了一整年跟圖資有關的案子,結果一直對這塊很好奇,原理大概知道,但細節卻遲遲沒播出時間來研究,今天毛起來翻了一下資料,就從 OpenStreetMap 下手吧!整體上原理就是把地球三維座標投影成二維座標,接著用一張張 256x256 正方型圖片來組成一張地圖,因此想要顯示地圖就是把目前關注的區域座標範圍,計算一下落在哪些圖上,接著把圖取出來即可。

此處 OpenStreetMap 的 Image API URL = "http://tile.openstreetmap.org/" + Zoom Level + "/" + X + "/" + Y + ".png" ,例如 Level 0 的地圖僅有一張,即為: http://tile.openstreetmap.org/0/0/0.png ,接著到 Level 1 時,變成 2x2 張圖、Level 2 為 4x4 張圖,每張圖仍維持 256x256 的大小,以此類推。

使用上就是要處理 GPS 座標:

在 Level 0 時,就是把座標轉換到 256x256 位置
在 Level 1 時,則為 512x512 位置
在 Level 2 時,計算 GPS 座標在 1024x1024 圖片的哪個位置
... 以此類推

至於座標投影如何轉換,可以參考 Bing Maps Tile System 或 Tiles à la Google Maps: Coordinates, Tile Bounds and Projection(globalmaptiles.py),也可以翻別人的 code 套公式,下次有空再來細細研究 XD

Level 0:

Level 0 

Leve 1:

Leve 1 (0,0)   Level 1 (1,0)
 Level 1 (0,1)  Level 1 (1,1)

Leve 2:

 

Level 2 (0,0)  Level 2 (1,0)  Level 2 (2,0)   Level 2 (3,0)
 Level 2 (0,1)  Level 2 (1,1)  Level 2 (2,1)  Level 2 (3,1)
 Level 2 (0,2)  Level 2 (1,2)  Level 2 (2,2)  Level 2 (3,2)
 Level 2 (0,3)  Level 2 (1,3)  Level 2 (2,3)  Level 2 (3,3)

參考資料:

OpenStreetMap - Beginners Guide 1.5
OpenStreetMap - Slippy Map
OpenStreetMap - OpenLayers
OpenStreetMap - Google Maps Example
Bing Maps Tile System
Tiles à la Google Maps: Coordinates, Tile Bounds and Projection


    文章標籤

    OpenStreetMap tile API

    全站熱搜

    changyy 發表在 痞客邦 留言(1) 人氣()