一、Google地圖切片的投影方式及瓦片索引機制
1.地圖投影
Google地圖采用的是Web墨卡托投影(如下圖),為了方便忽略了兩極變形較大的地區,把世界地圖做成了一個邊長等於赤道周長的正方形(赤道長度為6378137米),原點在正方形中心,即經緯度為(0,0)處。Web墨卡托投影的X,Y坐標取值范圍為:[-20037508.3427892,20037508.3427892],對應的經度取值范圍為[-180,180],對應的緯度范圍則為[-85.05112877980659,85.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.驗證
4.其它幾個參數的含義
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有無此后綴都不影響瓦片地址的訪問。
擴展閱讀:
后記:此文只是提供了一種方法,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!
原文鏈接:Google 地圖切片URL地址解析