地图瓦片坐标系定义及计算原理

时间:2024-03-17 08:31:51

原文地址

本文将介绍瓦片坐标相关知识,并提供高德地图、百度地图、谷歌地图的经纬度坐标与瓦片坐标的相互转换方法和类库。

背景

互联网地图服务商的在线地图都通过瓦片的方式提供,称为瓦片地图服务。最常见的地图瓦片是图片格式的,现在有的地图服务商也提供了矢量的瓦片数据(例如 GeoJSON 格式的矢量数据),然后在用户端使用Canvas渲染成图片,如node-canvas实现百度地图个性化底图绘制。

在进行地图开发时,为获取特定经纬度所在区域的瓦片和获取瓦片上像素点对应的经纬度,经常需要进行经纬度坐标与瓦片坐标、像素坐标的相互转换。本文将介绍瓦片坐标相关知识,并提供高德地图、百度地图、谷歌地图的经纬度坐标与瓦片坐标的相互转换方法和转换类库–tile-lnglat-transform。

经纬度信息 – > 瓦片图片
瓦片图片上的像素点 – > 经纬度

主要经纬度坐标系

国际标准的经纬度坐标是 WGS84,Open Street Map、外国版的 Google Map 都是采用 WGS84;高德地图使用的坐标系是GCJ-02;百度地图使用的坐标系是BD-09。高德地图和百度地图都提供了在线的单向坐标转换接口,将其他坐标系换化到自己的坐标系,但这种转换受限于http url请求字段长度和网络请求延迟,批量处理并不实用。离线相互转换可以通过开源 JavaScript 库 coordtransform 实现,误差在10米左右。

虽然各地图服务商经纬度坐标系不同,但某一互联网地图的经纬度坐标与瓦片坐标相互转换只与该地图商的墨卡托投影和瓦片编号的定义有关,跟地图商采用的大地坐标系标准无关。

墨卡托投影

使用经纬度表示位置的大地坐标系虽然可以描述地球上点的位置,但是对于地图地理数据在二维平面内展示的场景,需要通过投影的方式将三维空间中的点映射到二维空间中。地图投影需要建立地球表面点与投影平面点的一一对应关系,在互联网地图中常使用墨卡托投影。墨卡托投影是荷兰地理学家墨卡托于1569年提出的一种地球投影方法,该方法是圆柱投影的一种。

投影的更多内容,可以查看地图投影的N种姿势

地图瓦片坐标系定义及计算原理
地图瓦片坐标系定义及计算原理
墨卡托投影假设地球仪表面透明,且它的球心有光源,那么地球仪表面的大陆轮廓就被投影到了纸面上。用笔在纸面上记录下轮廓后,将直面展开,就得到了墨卡托投影的世界地图。

值得注意的是:

  • 墨卡托投影并不是一种坐标系,而是为了在二维平面上展示三维地球而进行的一种空间映射。所以在GIS地图和互联网地图中,虽然用户看到的地图经过了墨卡托投影,但依然使用经纬度坐标来表示地球上点的位置。
  • 在地图绘制和地图可视化时,就需要将地图数据使用投影的方式来呈现。

绝大多数地图服务商都采用了 Web Mercator 进行投影,瓦片坐标系的不同主要是投影截取的地球范围不同、瓦片坐标起点不同。

瓦片切割和瓦片坐标

对于经过墨卡托投影为平面的世界地图,在不同的地图分辨率(整个世界地图的像素大小)下,通过切割的方式将世界地图划分为像素为 256×256256\times256 的地图单元,划分成的每一块地图单元称为地图瓦片。

地图瓦片具有以下特点:

  • 具有唯一的瓦片等级(Level)和瓦片坐标编号(tileX, tileY)。
  • 瓦片分辨率为 256×256256\times256,也就是说无论地图分辨率为多少,瓦片图像的分辨率是不变的,永远都是 。
  • 最小的地图等级是0,此时世界地图只由一张瓦片组成。
  • 瓦片等级越高,组成世界地图的瓦片数越多,可以展示的地图越详细。
  • 某一瓦片等级地图的瓦片是由低一级的各瓦片切割成的4个瓦片组成,形成了瓦片金字塔。地图瓦片坐标系定义及计算原理

高德地图瓦片坐标

坐标系定义

高德地图瓦片坐标与 Google Map、Open Street Map 相同。高德地图的墨卡托投影截取了纬度(约85.05ºS, 约85.05ºN)之间部分的地球,使得投影后的平面地图水平方向和垂直方向长度相等。将墨卡托投影地图的左上角作为瓦片坐标系起点,往左方向为X轴,X轴与北纬85.05º重合且方向向左;往下方向为Y轴,Y轴与东经180º(亦为西经180º)重合且方向向下。瓦片坐标最小等级为0级,此时平面地图是一个像素为256*256的瓦片。

在某一瓦片层级 Level 下,瓦片坐标的 X 轴和 Y 轴各有 2Level2^{Level} 个瓦片编号,瓦片地图上的瓦片总数为 2Level×2Level2^{Level}\times2^{Level}

地图瓦片坐标系定义及计算原理
如上图所示,此时X方向和Y方向各有4个瓦片编号,总瓦片数为16。中国大概位于高德瓦片坐标的(3,1)中。

坐标转换图解

地图瓦片坐标系定义及计算原理
从高德地图坐标转换图解中可以看出,高德地图的坐标转换具有以下特点:

  • 所有坐标转换都在某一瓦片等级下进行,不同瓦片等级下的转换结果不同。
  • 经纬度坐标可以直接转换为瓦片坐标和瓦片像素坐标。
  • 瓦片像素坐标需要结合其瓦片坐标才能得到该像素坐标的经纬度坐标。

坐标转换公式

方法参考:Slippy map tilenames

地图瓦片坐标系定义及计算原理