前言
二维地图一般分成两种,一种是简化的道路地图视图,一种是卫星拍摄的高清影像地图。
四种坐标概念理解:
- 经度和纬度,对应地球上唯一的一个点(例如:Google 使用世界大地测量系统 WGS84 标准)。
经纬度理解可以参考:《GIS入门,经纬度和坐标系详解,什么是经纬度?经纬度有哪些坐标系?常见的地图应用中都使用哪些坐标系?天地图百度高德谷歌分别使用哪些坐标系?OpenLayers使用什么坐标系?》 - 世界坐标,对应地图上唯一的一个点。
- 像素坐标,对应特定缩放级别地图上的特定像素。
- 图块坐标,对应特定缩放级别地图上的特定图块。
墨卡托投影法
墨卡托投影法是一种常用的地图投影方法,它将地球表面上的经纬度坐标系统投影到平面上。这种投影方法由德国地理学家墨卡托(Gerardus Mercator)于16世纪中期开发。
其他投影法的扩展知识请参考:《GIS入门,什么是地图投影,地图投影有哪些类型,墨卡托投影属于哪一种类型的投影,为什么OpenLayers地图默认使用墨卡托投影》
墨卡托投影的主要特点是保持航向不变性,也就是说,直线在地图上仍然是直线,并且在航海时非常实用,因为船只可以在地图上以恒定的航向行驶。但是,由于墨卡托投影在投影过程中产生了区域失真,即赤道附近地区的面积被夸大,远离赤道的地区则被压缩,因此并不适合用于显示极地地区。
尽管墨卡托投影存在这种失真,但它仍然被广泛应用于航海、航空、导航以及一般的地图制作中,因为其简单易用和航向保持的特性。
世界坐标与墨卡托投影的关系
地图中的世界坐标是以墨卡托投影的原点(即地图西北角,经度为 180
度,纬度约 85
度)为起点测量的,在 x
轴上向东(右)递增,在 y
轴上向南(下)递增。
由于基础的墨卡托地图图块为 256 x 256
像素。因此,可用的世界坐标空间为 {0-256}, {0-256}
。
墨卡托投影法在经度方向上的宽度有限,但在纬度方向上的高度无限。利用墨卡托投影法在大约 +/-85 度处将基本地图图像截断,使制作出的地图呈方形,从而简化图块选择逻辑。
缺点是离极点非常近的地方绘制时,投影生成世界坐标可能在基本地图的可用坐标空间之外。
经纬度转换为世界坐标
真实世界中的位置转换为地图上的位置时,都需要将经度和纬度使用墨卡托投影法转换为世界坐标。
为便于计算像素坐标(见下文),我们假定地图在缩放级别为 0 时只包含一个基础尺寸的图块。然后,我们在缩放级别 0 定义像素坐标对应的世界坐标,使用投影将纬度和经度转换为此基础图块上的像素位置。该世界坐标是从地图投影原点到特定位置测量的浮点值。请注意,由于该值为浮点值,因此可能远比显示的地图图像的当前分辨率精确。换言之,世界坐标与当前缩放级别无关。
像素坐标
像素坐标对应特定缩放级别地图上的特定像素,世界坐标是地图中指定投影上的绝对位置。
像素坐标采用以下公式进行计算:
pixelCoordinate = worldCoordinate * 2zoomLevel
根据上述公式,缩放级别每增大一级,x
和 y
轴上的尺度均会翻倍,因此分辨率将是前一个级别的四倍。
例如,在缩放级别 1
,地图包含 4
个 256x256
像素图块,因此像素空间为 512x512
。在缩放级别 19
,地图上的每个 x
和 y
像素可使用 0 到 256 * 219
之间的值来定位。
世界坐标建立在地图的图块大小基础之上。因此,像素坐标整数部分的作用是标识该位置在当前缩放级别下的确切像素。
注意,对于缩放级别 0,像素坐标等于世界坐标。
于是就可以使用像素坐标在每个缩放级别精确表示地图上的每个位置。
地图引擎会根据指定的地图中心点(采用 经纬度
形式)缩放级别和外围 DOM 元素的大小来构造视图,并将此边界框转换为像素坐标。
然后,从逻辑上确定位于指定像素边界内的所有地图图块。每个地图图块均使用图块坐标来定位,该坐标大大简化了地图图像的显示。
图块坐标
对于较高的缩放级别,地图引擎无法一次加载所有地图图像。
地图引擎将各缩放级别的图像分解成一组在逻辑上以便于应用理解的顺序排列的地图瓦片(金字塔结构的图块)。当地图移动(滚动)至新位置,或者切换到新的缩放级别时,地图引擎会使用像素坐标确定需要哪些图块,然后将这些值转换为需要检索的一组图块。这些图块坐标采用特殊的分配架构,使得在逻辑上更容易确定哪个图块包含指定位置点的图像。
地图中的图块从与像素原点相同的位置开始编号。为了便于地图引擎实现墨卡托投影法,原点图块始终位于地图的西北角,x
值从西向东增加,y
值从北向南增加。系统使用基于该原点的 x,y
坐标为图块建立索引。例如,缩放级别为 2
时,地球分成 16
个图块,每个图块都可通过唯一的 x,y
来定位。
分为四行和四列图块的世界地图。
通过将像素坐标除以图块大小 (256) 并取结果的整数部分,可以生成当前缩放级别的图块坐标。
如此便构成了最常用的xyz瓦片地图格式,更多xyz瓦片地图知识请参考:《GIS入门,xyz地图瓦片是什么,xyz数据格式详解,如何发布离线XYZ瓦片到nginx或者tomcat中》