1.什么是TMS
TMS是tile map service的简写。是一种瓦片服务,也称之为WMTS(web map tile service)。
2.TMS算法
把投影后的世界地图按四叉树进行分层切割,切割后的瓦片数量呈金字塔型,数量和层级关系如下:
3. 瓦片编号
对这些瓦片进行编号,由于瓦片编号的规律性(平面直角坐标系),加上投影也是一种算法(球形展开成平面),所以,编号和坐标之间就建立了一种索引关系,通过编号可以得到经纬度区间,通过经纬度可以找到瓦片的编号,具体的计算公式如下:
n = 2 ^ zoom
xtile = ((lon_deg + 180) / 360) * n
ytile = (1 - (log(tan(lat_rad) + sec(lat_rad)) / π)) / 2 * n
由公式可以看出,只要确定经纬度和层级,就可以得到瓦片的编号索引,相反,若知道编号就可以去推算未知的经纬度了,其计算公式如下:
n = 2 ^ zoom
lon_deg = xtile / n * 360.0 - 180.0
lat_rad = arctan(sinh(π * (1 - 2 * ytile / n)))
lat_deg = lat_rad * 180.0 / π
4.友情提示
Google tile同TMS有差别,原因是:Google tile的直角坐标系原点在左上角(即北极点同中央子午线的交点),而TMS的原点在左下角(南极点同中央子午线的交点)。所以:编号索引中的x轴不变,y轴略有变化,结果为该列所有tile减去y再减去1。