admin 管理员组文章数量: 1184232
微信搜索:“二十同学” 公众号,欢迎关注一条不一样的成长之路
一、Google地图切片的投影方式及瓦片索引机制
1.地图投影
Google地图采用的是 Web墨卡托投影 (如下图),为了方便忽略了两极变形较大的地区,把世界地图做成了一个边长等于赤道周长的正方形(赤道半径为6378137米),原点在正方形中心,即经纬度为(0,0)处。Web墨卡托投影的X,Y坐标取值范围为:[-20037508.3427892,20037508.3427892],对应的经度取值范围为[-180,180],对应的纬度范围则为[-85.05112877980659,85.05112877980659]。具体投影解释请参考 :
Google 地图的索引机制是 TMS(Tile Map Service) 规范的一个变种 ,其地图瓦片如下图进行索引:
Google 瓦片坐标系: 把地球投影后形成的正方形划分为2 的 level(缩放级别) 次幂个地图瓦片, 原点在左上角 ,类似于像素坐标系;
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 地图使用了四个服务地址,即 ( 0—3).google.cn/......,都是可以用滴。
地图:。。。
影像底图:。。。
影像的叠加层:。。。
2) url地址中的 lyrs 表示的是图层类型,即瓦片类型,具体含义如下:
地图瓦片类型验证,直接修改lyrs参数的值即可:
m:路线图
t:地形图
p:带标签的地形图
s:卫星图
y:带标签的卫星图
h:标签层(路名、地名等)
3) 暂时未发现 "&s=..." 的意义,url有无此后缀都不影响瓦片地址的访问。
版权声明:本文标题:从Google地图切片URL看地图的显示原理 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1773624209a3564075.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论