Google 地圖切片URL地址解析

一、Google地圖切片的投影方式及瓦片索引機制

1.地圖投影

Google地圖採用的是Web墨卡託投影(如下圖),爲了方便忽略了兩極變形較大的地區,把世界地圖做成了一個邊長等於赤道周長的正方形(赤道長度爲6378137米),原點在正方形中心,即經緯度爲(0,0)處。Web墨卡託投影的X,Y座標取值範圍爲:[-20037508.3427892,20037508.3427892],對應的經度取值範圍爲[-180,180],對應的緯度範圍則爲[-85.0511287798065985.05112877980659]。具體投影解釋請參考墨卡託投影

    
2.瓦片索引機制

Google 地圖的索引機制是 TMS(Tile Map Service) 規範的一個變種,其地圖瓦片如下圖進行索引:

 Google 瓦片座標系:把地球投影后形成的正方形劃分爲2 的 level(縮放級別) 次冪個地圖瓦片,原點在左上角,類似於像素座標系;詳細解釋參見Google Maps API 文檔

           

TMS瓦片座標系:TMS與Google的地圖瓦片切割方法相同,不同的是TMS的原點在左下角。

轉換關係:TMS 與Google 座標系的X 、Z是相等的,Y 的轉換關係爲:Y(TMS) +  Y(Google) = Math.pow(2,zoom) - 1

注:關於投影和瓦片索引機制強烈推薦閱讀Tiles à la Google Maps: Coordinates, Tile Bounds and Projection文中詳細分析了地圖瓦片涉及各類座標的轉換關係及具體算法,包括瓦片座標(Google、TMS、Bing QuadTree)、像素座標、WGS84 經緯度、Mercator 投影平面座標等。

3.地圖縮放級別的分辨率與地圖比例尺的關係

地圖縮放級別的分辨率(Resolution),是指某縮放級別每個像素代表的實際距離;

地圖比例尺(Scale),是指某縮放級別圖上一米代表的實際距離;

默認使用屏幕分辨率爲96
算法:
dpi=96,即表示每英寸96像素,1英寸=2.54釐米。
比例尺與分辨率的關係:Scale=Resolution×每米的像素個數,
即有Scale = Resolution×(96*100)/2.54
則Resolution = Scale*2.54/(96*100)

二、Google地圖瓦片地址解析

1.使用Google Chrome 打開Google地圖界面,按F12打開  開發人員工具,如下圖:


由圖片左側的url地址可見,只要正確解析地址中的四個參數(x , y , z , s)就可以獲取到地圖瓦片了。

下面是本人的分析思路:

1.四個參數的含義(x、y、z、s):

x , y 是瓦片座標系的座標值,z代表縮放級別,s則共有八個字符:空字符和Galileo的七個字符。

x , y 的值在 z 增加時會按級數遞增,而s 的值很可能是 x , y , z 三個參數組合後的從 0 到 7 的一個索引值。

x , y , z 組合後與 8 求餘即可得到 s 的值。 

2.四個參數的關係:

  • 當 x = 0 時,y 增 1 時,s會同時增 1,與 z 值無關。
  • 當 y = 0 時,x 增 1 時,s會同時增3 ,與 z 值無關。
  • 從上面兩條可以得出,x , y 很可能以 3*x + y 的方式組合,然後與 8 求餘即得 s。
推測公式爲:( 3*x + y )%8 = s 

3.驗證

隨即抽取幾個地址,取其中的 x , y , s代入第二步中的推測公式驗證,果然如此。之後怎麼折騰這些瓦片地址就看你了。影像地圖只是前綴不一樣而已。看來以後不用再爲找合適的 Google 地圖下載器折騰了,你懂的!

4.其它幾個參數的含義

1) Google 地圖使用了四個服務地址,即 http://mt ( 0—3).google.cn/......,都是可以用滴。

2) url地址中的 lyrs 表示的是圖層類型,即瓦片類型,具體含義如下:

地圖瓦片類型驗證,直接修改lyrs參數的值即可:http://mt2.google.cn/vt/lyrs=y@258000000&hl=zh-CN&gl=CN&src=app&x=214130&y=114212&z=18&s=Ga

m:路線圖
t:地形圖
p:帶標籤的地形圖
s:衛星圖
y:帶標籤的衛星圖
h:標籤層(路名、地名等)
3) 暫時未發現 "&s=..." 的意義,url有無此後綴都不影響瓦片地址的訪問。

擴展閱讀:

1.墨卡託投影經緯度與平面座標轉換公式

後記:此文只是提供了一種方法,google 地圖切片地址的算法及前綴都可能會不斷調整。

三、GMap.NET 

GMap.NET - Great Maps for Windows Forms & Presentation

一個非常強大的開源地圖項目(winform版),對於解析Google等地圖服務的算法相當不錯。

GMap.NET is great and Powerful, Free, cross platform, open source .NET control. 

Enable use routing, geocoding, directions and maps from Coogle, Yahoo!, Bing, OpenStreetMap, ArcGIS, Pergo, SigPac, Yandex, Mapy.cz, Maps.lt, iKarte.lv, NearMap, OviMap, CloudMade, WikiMapia in Windows Forms & Presentation, supports caching and runs on windows mobile!


ps:2015.5.15增加了url相關參數的描述;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章