瓦片地图面面观之瓦片组织

瓦片组织

通过《瓦片地图面面观》一中图1瓦片网格的辅助,可直观感受到谷歌地图在第一级(缩放级别)的瓦片行列排列方式。可见谷歌地图第一级由四张瓦片构成了整个世界地图。

我们将瓦片地图中,瓦片的行列排列方式称之为“瓦片组织”。事实上,瓦片组织还是比较容易理解的,三个条件即可唯一定义瓦片组织:

  1. 瓦片列号增长方向;
  2. 瓦片行号增长方向。
  3. 瓦片编号起算原点在投影平面直角坐标系中的坐标。

如图1所示,谷歌地图瓦片组织可概括为:列号向右增长(正东为右,以后博客中再涉及瓦片列号增长方向一律相对于正东为右而言),行号向下增长(正北为上,以后博客中再涉及瓦片行号增长方向一律相对于正北为上而言)。投影平面直角坐标系左上角(-20037508.3427890167, 20037508.3427890167)即为瓦片原点。

瓦片地图在各个缩放级别必然有相同的瓦片组织。

瓦片编号

如图1所示,每个瓦片网格中央都有一个编号,我们称之为为瓦片编号,它由三个值组成,依次为:缩放级别、瓦片列号、瓦片行号。

瓦片编号有瓦片组织和缩放级别共同决定,瓦片编号在瓦片地图工程实现体系中占据了非常重要的位置。瓦片编号直接决定了瓦片加载的url。比如,图1中1_0_1的瓦片url为:

http://mt2.google.cn/vt/lyrs=s@802&hl=zh-CN&gl=cn&x=1&y=0&z=1&s=Gal

该url指向一张256*256的jpg格式瓦片,如图2所示。

图2 瓦片实例

相信大家已找出瓦片编号与瓦片url之间的关系:x=1表示瓦片列号为1,y=0表示瓦片行号为0,z=1表示缩放级别为1。

瓦片编号与瓦片加载url总是有一一对应的关系。

计算瓦片编号

唯一定义瓦片组织后,即可根据投影平面坐标计算不同缩放级别下的瓦片编号,计算公式如下:

$$\left\{ \begin{aligned} col &=& floor(\frac {t_{x}\times \left ( x - x_{o} \right )}{r_{x}\times 256}) \\ row &=& floor(\frac {t_{y}\times \left ( y - y_{o} \right )}{r_{y}\times 256}) \\ \end{aligned} \right. $$

其中:

  1. col:瓦片列编号;
  2. row:瓦片行编号;
  3. t_{x}:瓦片列号增长方向,瓦片组织列号向右增长取值为1,反之取值-1;
  4. t_{y}:瓦片行号增长方向,瓦片组织列号向上增长取值为1,反之取值-1;
  5. (x, y):投影平面坐标;
  6. (x_{o}, y_{o}):瓦片编号起算原点坐标;
  7. r_{x}:为X轴方向分辨率,单位为m/p(米每像素);
  8. r_{y}:为Y轴方向分辨率,单位为m/p(米每像素);

r_{x}r_{y}与缩放级别相关,有

$$\left\{ \begin{aligned} r_{x} &=& f_{1}(level)) \\ r_{y} &=& f_{2}(level)) \\ \end{aligned} \right. $$

关于r_{x}r_{y}更多信息,参见《瓦片地图面面观之缩放级别》

主流瓦片地图的瓦片组织汇总

主流瓦片地图的瓦片组织可分以下几类:

  (x_{o}, y_{o}) t_{x} t_{y} tile maps
1 (0.0, 0.0) 1 1 百度地图,搜狗地图
2 (-20037508.3427890167,20037508.3427890167) 1 -1 ArcGIS online,OpenStreetMap,MapQuest,必应地图、天地图(web墨卡托),高德地图,谷歌地图,超图,e都市
3 (-180.0, 180.0) 1 -1 谷歌地球
4 (-180.0, 90.0) 1  -1  天地图(经纬度直投)
5 (-20037508.3427890167, -20037508.3427890167) 1 1 腾讯地图、360地图

瓦片组织相关OGC标准

对于瓦片组织,事实上OGC曾提过这一方面的标准:WMTS(Web Map Tile Service),有兴趣的朋友可以看看。WMTS包含了很多内容,对于瓦片组织方面的描述为:瓦片行号向上增长,瓦片列号向右增长,左下角即为瓦片原点。

事实上,很多互联网大厂并未遵照这一标准,比如谷歌地图等。正因为如此,这里不对WMTS做过多讨论。

发布了20 篇原创文章 · 获赞 4 · 访问量 7210

猜你喜欢

转载自blog.csdn.net/chenwen112/article/details/96319769