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

原文地址

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

背景

互联网地图服务商的在线地图都通过瓦片的方式提供,称为瓦片地图服务。最常见的地图瓦片是图片格式的,现在有的地图服务商也提供了矢量的瓦片数据(例如 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 × 256 256\times256 256×256 的地图单元,划分成的每一块地图单元称为地图瓦片。

地图瓦片具有以下特点:

  • 具有唯一的瓦片等级(Level)和瓦片坐标编号(tileX, tileY)。
  • 瓦片分辨率为 256 × 256 256\times256 256×256,也就是说无论地图分辨率为多少,瓦片图像的分辨率是不变的,永远都是 。
  • 最小的地图等级是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 轴各有 2 L e v e l 2^{Level} 2Level 个瓦片编号,瓦片地图上的瓦片总数为 2 L e v e l × 2 L e v e l 2^{Level}\times2^{Level} 2Level×2Level

在这里插入图片描述
如上图所示,此时X方向和Y方向各有4个瓦片编号,总瓦片数为16。中国大概位于高德瓦片坐标的(3,1)中。

坐标转换图解

在这里插入图片描述
从高德地图坐标转换图解中可以看出,高德地图的坐标转换具有以下特点:

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

坐标转换公式

方法参考:Slippy map tilenames

在这里插入图片描述

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mapbox是一个提供地图服务的平台,它支持加载其他坐标系瓦片数据。加载其他坐标系瓦片需要进行以下几个步骤: 1. 确定目标坐标系:首先需要确定要加载的瓦片数据所使用的坐标系。常见的坐标系有WGS84(经纬度坐标系)和Web Mercator(Web墨卡托投影坐标系)等。 2. 创建地图样式:Mapbox使用地图样式来定义地图的外观和行为。在创建地图样式时,需要指定地图的初始中心点和缩放级别,以及要加载的瓦片数据源。根据目标坐标系,选择合适的瓦片数据源。 3. 添加瓦片数据源:在地图样式中,添加瓦片数据源可以通过URL或矢量瓦片数据源以供加载。根据目标坐标系,选择合适的瓦片数据源,并使用其提供的URL或相关信息设置瓦片数据源。 4. 加载瓦片数据:在地图样式中,使用添加的瓦片数据源加载地图数据。根据目标坐标系,Mapbox会通过相关的URL或数据源解析并加载瓦片数据。 5. 显示地图:最后,将创建的地图样式应用到地图容器中,以显示加载的瓦片数据。可以使用Mapbox提供的JavaScript API来在网页中嵌入地图,并通过设置容器的大小和位置来适应显示。 总之,通过以上步骤,可以使用Mapbox加载其他坐标系瓦片数据。根据目标坐标系选择适当的瓦片数据源,并在地图样式中添加和加载数据源,最后将样式应用到地图容器中即可显示加载的瓦片数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值