联合国倡导换掉墨卡托,为什么高德百度连一个像素都不会改

这两天联合国又在倡导改用「平等地球投影」,网上不少人跟着喊,说统治了地图圈几百年的墨卡托投影早该进垃圾堆了。理由大家都听过,它把高纬度无限放大,格陵兰在图上看着跟非洲差不多大,现实里非洲其实是它的十四倍

既然人人都知道它失真,换掉它不就是顺理成章的事吗?

但凡在手机上写过两行地图代码、或者稍微研究过车载导航的工程师,看到这种讨论大概都会笑一笑。

因为不管联合国怎么发倡议,你手机里的高德、百度、微信位置,还有 Google Maps,连一个像素都不会改

真不是大家懒,纯粹是改不起。二十年前第一代网页地图为了能在破旧的浏览器里拖得动、路口转弯不至于变形,在底层硬塞了一套极其粗暴的折中方案。结果这一用,全世界的代码就被套牢了二十年。

事情得倒回 2005 年。

那年 Google Maps 刚上线,工程师碰到了一个工程死结。

地球是个三维椭球体,而屏幕是二维平面。在网速还按 KB 算的年代,不可能把整张高精度世界大图一次性塞进浏览器。

唯一的工程解法,就是切图

把地球切成无数个 256 x 256 像素的正方形小方块,也就是前端常说的「瓦片(Tiles)」。手指滑到哪,客户端就调取对应坐标的切片。

但问题来了,怎么把圆滚滚的地球,切成一块块严丝合缝的正方形?

如果按常规经纬度直接展开,纬度越高,东西方向被拉得越长。你在北京看地图,圆形的环岛会被扯成椭圆,斜着的路口全被扯歪。现实里端正九十度的斜路口,在屏幕上只剩七十五度,车还怎么导航?

于是 Google 工程师翻出了 1569 年墨卡托画海图的方法,正形等角圆柱投影。

墨卡托投影有一个神仙特性,叫「等角(Conformal)」。局部范围内所有几何角度绝不畸变。现实里垂直相交的十字路口,在地图上无论放大多少倍,永远是端正的九十度直角。车头朝哪边,转弯就是哪边。

但墨卡托有一个要命的死穴。

在它的数学公式里,纵轴 $y$ 坐标取决于对数正切函数 ln(tan(π/4 + lat/2))

当纬度接近南北极九十度时,分母趋向于零,数值直接冲向正负无穷大。要把两极画全,这张图的高度需要无限长

无限长的东西,怎么切成 256 x 256 的正方形瓦片?

当时的工程师想法特别直接,画不下,那就不画了

他们直接在南北两极各切了一刀,把两极冰原整个扔掉,强行把剩下的世界裁剪成了一个长宽相等的正方形

他们切下的精确数字,是 85.0511287798066°

为什么会留这么奇怪的小数点后十三位?

因为在数学计算上,只有当纬度刚好等于 85.0511287798066° 时,公式算出来的纵向范围,才刚好等于赤道周长的一半 [-πR, πR]

只有在这个严丝合缝的奇葩纬度上,整张世界地图的长宽比才刚好是 1:1,才能被四叉树优雅地二分切割,变成全球瓦片金字塔

不信的话,去翻翻今天全世界最流行的开源地图库 Leaflet 或者 OpenLayers 源码,核心文件里赫然写着一行硬编码常量,MAX_LATITUDE = 85.0511287798

北极熊和企鹅怎么看世界不重要,瓦片能拼成正方形才是正事。

更绝的操作还在后面。

Google 当年不仅切了地球,还嫌椭球体算起来太吃算力,直接假装地球是个完美的正球体。这种完全不按套路出牌的野路子,正统测绘界一开始根本不认,自然也没给它分配过官方代号。

开源社区为了能在代码里调用它,索性自己编了个非官方编号,叫 EPSG:900913

这串数字其实是个象形字谜,9 对应小写字母 g,0 就是 o,1 就是 l,最后的 3 反过来刚好是大写字母 E。顺着拼下来,900913 刚好就是 google

后来的发展超出了所有测绘专家的预料。

因为 Google Maps 太成功了,全世界的开发者、网站、导航 App 全部被迫跟着这套规范走。OpenStreetMap、微软 Bing Maps、高德、百度,谁想做在线地图,就必须适配这套 256 x 256 的瓦片体系。

到了 2008 年,国际测绘组织不得不举手投降,正式把这个野路子收编进国际标准,给了它一个正经编号,EPSG:3857,官方名字就叫「Web 墨卡托」。

一个工程师当年为了切图顺手搞出来的临时妥协,最终成了统治全人类手机屏幕的数字基建。

所以回到开头的问题。

联合国提倡的「平等地球投影」好不好?当然好。在挂历海报和地理教科书里,把真实面积比例还给非洲和南美洲,那是对地缘文化和国际平等的尊重。

但在工程世界里,代码只尊重物理现实和计算效率

只要你开车在路口还需要看懂转弯路线,只要外卖小哥在窄巷里还需要辨认方向,只要手机还在用瓦片金字塔渲染地图,这套把地球两头各砍一刀的 Web 墨卡托就一天都不会退场

现实世界往往就是这样。

很多统治了我们日常十几年的科技标准,剥开那层精密神圣的外壳,底下往往就躺着二十年前某个工程师为了解决燃眉之急,随手写下的几行荒诞妥协。

署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
位旅人路过 次翻阅 初次见面