Web地图服务开发知识--地图投影(Web墨卡托)

张开发
2026/4/6 5:59:12 15 分钟阅读

分享文章

Web地图服务开发知识--地图投影(Web墨卡托)
由于我们的目的是做Web开发所以会重点介绍一下Web墨卡托投影这是全网唯一能通俗解释Web墨卡托原理的一篇文章。核心矛盾球面 vs 平面简单说投影就是把地球这个 “圆球” 上的地理信息“摊平” 画到平面图纸或电子屏幕上的方法。地球是一个近似球体的椭球而地图是平面。球体的表面是不可展曲面——就像你没法把一个橘子皮不拉伸、不撕裂地完全铺成一个平面。所以所有地图投影都要做一件事取舍要么牺牲形状要么牺牲面积要么牺牲方向。常见投影和用途投影类型分类特点常用场景墨卡托投影圆柱投影方向准、形状不歪低纬度高纬度面积放大航海图、手机地图高德/百度高斯-克吕格投影分带投影每个带内变形很小城市规划图、GIS工程应用圆锥投影圆锥投影在标准纬线上无变形远离标准纬线变形逐渐增大适合中纬度地区、东西方向延伸的区域如中国、美国、欧洲等摩尔魏特投影等积投影面积绝对准确形状会歪世界资源分布图、人口分布图方位投影方位投影从一个点比如北极向外辐射方向准极地地图、机场跑道导航图配图参考(网图侵删)方位投影、圆锥投影、圆柱投影的示意图下墨卡托投影样图下高斯 - 克吕格投影原理下高斯 - 克吕格投影样图下等积投影样图下方位投影地图样图下Web核心墨卡托投影与Web墨卡托墨卡托投影原理假设地球被围在一中空的圆柱里赤道与圆柱相切接触然后再假想地球中心有一盏灯把球面上的图形投影到圆柱体上再把圆柱体展开这就是墨卡托投影地图。如下墨卡托投影没有角度变形每一点向各方向的长度比相等经纬线都是平行直线且相交成直角经线间隔相等纬线间隔从基准纬线处向两极逐渐增大。其核心问题是面积严重失真例如格陵兰岛在投影后看起来和非洲差不多大但实际非洲面积是格陵兰的14倍。南极洲被拉成横贯底部的巨大带状。当纬度趋近90°时投影后的y值趋向无穷大。Web墨卡托Web墨卡托是由Google在2005年推出Google Maps时率先采用随后因其工程实用性与性能优势被全球主流地图平台采纳最终成为事实标准。核心设计初衷降低Web开发复杂度墨卡托原理简单但实际工程实现存在难点地球是椭球体而非标准球体基于椭球体的投影计算极其复杂高中立体几何不涉及椭球体计算大部分人是不理解其计算公式的。而地图软件需要大量、持续的经纬度与平面坐标转换在早期终端计算资源有限的情况下椭球体计算难以落地。Google的解决方案是将地图球先揉成一个标准球体再基于球体做墨卡托投影。这一简化让坐标转换复杂度降低两个数量级普通软件可通过简单计算实现转换。专业机构会提前基于标准球体生成完整平面地图其他Web应用只需简单机选即可得找到每个经纬度在地图上的XY坐标进行页面渲染。目前几乎所有Web地图SDK均以Web墨卡托为默认投影例如前端地图开发框架Leaflet、OpenLayers。在墨卡托投影中南北极点纬度±90°的y值会趋向无穷大无法生成地图瓦片。因此Web墨卡托强制限定纬度范围为±85.0511287798°——此纬度的y坐标正好等于赤道的长度。这一限定既解决了极点计算问题又让全球地图投影范围恰好呈正方形完美适配Web地图的瓦片切割机制。一个0级瓦片像素是256*256正好覆盖全球地图。如下Web墨卡托原理重点现在你不一定理解Web墨卡托的误差是怎么产生的。所以介绍另一种更接近实操的理解方法我们先要介绍一下经纬度是如何得到的椭球上的纬度是法线与赤道面的夹角大地纬度假设在北半球中纬度取一点 A过 A 点作椭球的切线再作垂直于切线的直线 → 这就是法线这条法线不经过地心除非在赤道或极点如果是正球体法线则会经过地心法线与赤道平面的夹角就是大地纬度 n。对于地球表面的每一个点以天安门为例先用地球实际的椭球上得到他的经纬度。然后在标准正球体上找到数值相同的经纬度用圆柱投影把这个经纬度投影到圆柱上圆柱展开后就得到了这个点在平面地图上的位置实际上这个位置非常容易就能计算出来后文有公式绘制地图时就把天安门画在这个位置。这个位置显然和椭球体投影不在同一个位置所以误差就产生了。下图中A点是天安门在墨卡托投影的位置A点是Web墨卡托投影的位置。Web墨卡托计算公式地球正球半径 R6378137米赤道的半径正算公式地理经纬度m,n → 平面坐标X,Y输入地理经度m (°)、地理纬度n (°)输出Web墨卡托投影横坐标X、纵坐标Y单位米X R × m × π / 180Y R × ln[tan(π/4 n × π / 360)]反算公式平面坐标X,Y → 地理经纬度m,n输入Web墨卡托投影横坐标X、纵坐标Y单位米输出地理经度m (°)、地理纬度n (°)m (X × 180) / (R × π)n [2×arctan(e^(Y/R)) - π/2] × 180/π至于X、Y在屏幕上的展示逻辑未来有机会我们在地图瓦片原理专题中介绍。Web墨卡托缺点很显然Web墨卡托投影出来的平面图会和原始墨卡托有些出入在Y方向上。所以对于专业测绘、地理分析等需要精确比例尺的场景Web墨卡托是不适用的因为距离、面积都会存在误差。在纬度45°附件地图的纬度圈半径误差在8.6公里左右赤道到 45° 纬度的投影距离Web 墨卡托比原始墨卡托长近 3.7 公里。通常我们使用WGS84 存储原始数据使用Web墨卡托显示数据。Web墨卡托与EPSG编码Web墨卡托已被收录于EPSG标准中对应编码为EPSG:3857。EPSG是什么EPSG是欧洲石油调查小组European Petroleum Survey Group的缩写它制定了一套全球统一的空间参考系统编码标准。核心作用是为各种地图投影、坐标系、椭球参数分配唯一ID编号让不同软件之间的坐标转换和数据共享更规范、无歧义。EPSG编码覆盖空间参考全链路参数核心分为两大类地理坐标系基于地球椭球的球面坐标系用经纬度描述位置单位通常是度°。典型例子EPSG:4326对应WGS-84地理坐标系是GPS的标准坐标系也是绝大多数地图数据源的原始坐标系经纬度范围为[-180°,180°]经度、[-90°,90°]纬度。EPSG:4490对应中国2000国家大地坐标系CGCS2000是中国测绘的官方地理坐标系。投影坐标系将地理坐标系球面通过投影算法转换为平面直角坐标系用米、千米等长度单位描述位置适合地图绘制、距离面积计算。典型例子EPSG:3857Web墨卡托投影坐标系基于WGS-84地理坐标系EPSG:4326是Google Maps、百度地图、OpenStreetMap等Web地图的默认坐标系平面坐标单位为米。Web墨卡托与EPSG的关联Web墨卡托的官方EPSG编码是EPSG:3857也被称为“伪墨卡托”。早期Web墨卡托曾用临时编码EPSG:900913Google早期自定义谐音“GOOGLE”后被EPSG:3857取代成为标准。最后我会继续写一些文章来介绍这些内容地图合规https://blog.csdn.net/tzy233/article/details/156914011坐标系https://blog.csdn.net/tzy233/article/details/157034772地图开发工具https://blog.csdn.net/tzy233/article/details/157185045离线地图https://blog.csdn.net/tzy233/article/details/1572244793D地图https://blog.csdn.net/tzy233/article/details/157365294WMTS和瓦片https://blog.csdn.net/tzy233/article/details/159862368

更多文章