Skip to main content

Openlayers 瓦片地图原理二10

一、瓦片计算
1.1、切片方式

如果对整个地球图片进行切片,需要考虑的是整个地球图片大小,以及切片规则,切片(瓦片)大小。

对于WebGIS而言,在线地图几乎都采用Web墨卡托投影坐标系(EPSG:3857,后面会详解介绍),地球投影到平面上就是一个正方形。为了方便使用,切片时大多按照正方形的方式来进行切片,比如大小为256256的瓦片(单位像素),一个10241024的地图,就可以切片4张小的256*256的瓦片。

瓦片大小几乎都是256256,有一些则会增加到512512(由于以前的屏幕分辨率通常比较低,所以256256的瓦片在低分辨率的屏幕上显示效果比较好,随着屏幕分辨率的提高,瓦片大小自然就会增加到512512。但目前主流仍是256*256大小的瓦片)。

LOD会使得不同层级下的全球地图大小不一致,结合瓦片地图技术一起,就出现了金字塔瓦片结构:

在金字塔瓦片结构中,上一层级的一张瓦片,在更大一层级中,会用4张瓦片来表示,依次类推,比如上一篇文章中看到的Google在线瓦片地图的第0级和第1级的瓦片地图就呈现这样的规律。这样做可以维持正方形的投影方式不变,同时按照2的幂次方放大(瓦片的边长),计算效率非常高。
1.2、瓦片数量计算

通过上面切片的介绍,我们可以对每一层级拥有的瓦片的数量进行简单的计算:

层级0的瓦片数是 1 = 2^0 ∗ 2^0
层级1的瓦片数是 4 = 2^1 2^1
层级2的瓦片数是 16 = 2^2
2^2
层级3的瓦片数是 64 = 2^3 2^3
层级z的瓦片数是 2^z
2^z

1.3、瓦片坐标系

从以上的金字塔瓦片结构可以看出来,瓦片的组织方式是三维的,因此对一幅地图进行切片时,需要给每一块瓦片进行详细的编号,即需要指定每一块瓦片的行号、列号以及层级数。

这个问题就涉及到了瓦片坐标系,瓦片坐标系是瓦片地图的组织参考框架。它规定每一块瓦片的行号、列号以及层级数,另外,在瓦片坐标系中列号一般从左到右方向递增,而在瓦片坐标系中行号有可能沿着从上到下的方向递增,或者从下到上递增,所以不同的瓦片坐标系的起始点(原点)不同。

不同的在线地图服务商,可能定义不一样的瓦片坐标系,瓦片坐标系不一样,那么对应的同一个位置的瓦片的坐标也会不一样。需要引起重视。

OpenLayers提供了一个用于调试瓦片坐标系的ol.source.TileDebug类。借助这个类,我们可以清晰的看到每一个瓦片的坐标:

代码如下:

注册VIP

如果已经是VIP,请直接登陆 登陆

发表回复