我们常见的地图是如何绘制的?墨卡托投影是什么?

By Long Luo

最近在书店里看到一本 《数学的奥秘》 ,原著是 《The Secret Life of Equations: The 50 Greatest Equations and How They Work》 ,讲的是最伟大的数学方程式起源、构成、含义和应用。书的内容并不多,我看了其中的一部分,里面有讲 墨卡托投影(Mercator projection)1

我对地理和地图一直很感兴趣,但之前对原理一直一知半解的,只知道我们常见的地图都是墨卡托投影,由墨卡托2 在 1569年创立。但墨卡托投影的原理是什么却并不清楚。书里面只有几页,但具体公式缺乏说明及推导过程,所以这几天通过查找资料掌握了墨卡托投影的原理。

如何绘制地图?

在大航海时代,航海家可以通过六分仪和观察日月星辰获取到经纬度,但在茫茫大海中迷失方向是很可怕的事情,如何才能正确的航行到目的地呢?

地球由于自转是一个两极比赤道略短的扁球体,但扁率约为 \(1/300\) ,非常之低,因为可以视为球体。因为球面不是可展曲面,也就是如果展成平面的话,长度会发生形变,所以也会形变。因为根据高斯绝妙定理(Gauss theorem egregium)3 ,平面的高斯曲率为 \(0\) ,而球面的高斯曲率为 \(\frac{1}{R^2}\) ,其中 \(R\) 为球面半径,所以在保持图形完整性前提下,将球面转化为平面,投影后得到的经纬线网形状必然会产生变形,也就是说,在投影的过程中,变形是必然存在的。

在这种情况下,墨卡托运用等角圆柱投影法绘制了航海图,极大地方便了航海家。有了墨卡托海图,航海家想要到达某个目的地,只需要在出发点和目的地之间连一条直线,量出这条航线和经线的夹角,按照航行路线就能到达目的地。

Map Mercator Projection

什么是墨卡托投影?

设想将地球置于在一中空的圆柱里,如下图所示,其基准纬线(赤道)与圆柱相切。再设想地球中心处放置一灯泡,那么从球心处发射的光线会把球面上的图形投影到圆柱体上,之后再将把圆柱体展开,那么就可以得到一张墨卡托投影绘制出的地图。

Mercator Projection

墨卡托公式的推导

\(P(lng, lat)\) 表示投影前的球面上的点,在数学上我们常使用弧度制,则表示为 \(P(\lambda , \varphi )\) ,其中 \(\lambda = lng \cdot \frac{\pi}{180}\)\(\varphi = lat \cdot \frac{\pi}{180}\) ,所以墨卡托投影就是将球面上的 \(P(\lambda , \varphi )\) 转换为平面直角坐标系 \(P' (x, y)\) ,即定义为下面的一个映射:

\[ f: P \rightarrow P' \]

那么则有函数 \(f_x\)\(f_y\)

\[ \left\{ \begin{aligned} x &= f_x(\lambda , \varphi ) \\ y &= f_y(\lambda , \varphi ) \\ \end{aligned} \right. \]

如下图,图中由经纬线分割出的方块区域 \(\Box KPMQ\) 映射为 \(\Box K'P'M'Q'\) ,如果 \(P\)\(Q\) 点足够近的话,那么 \(\Box KPMQ\) 可以近似为矩形。

Infinity small

\(P\) 的经纬度为 \([\lambda , \varphi ]\) ,相邻点 \(Q\) 的经纬度为 \([\lambda + \mathrm{d}\lambda , \varphi + \mathrm{d}\varphi]\) ,那么平行赤道的纬线所在圆的半径 \(r = R \cos \varphi\) ,则有圆弧:

\[ PM = r \times \mathrm{d} \lambda = R \cos \varphi \mathrm{d} \lambda \]

,圆弧 \(PK = R \mathrm{d} \varphi\) 。投影变换后平面上的矩形长宽分别为 \(\mathrm{d} x\)\(\mathrm{d} y\)

在变换后,在微观局部应该保持长宽比例不变,那么:

\[ \frac{R \cdot \mathrm{d} {\varphi}}{\mathrm{d} y} = \frac{R \cdot cos \varphi \cdot \mathrm{d} \lambda }{\mathrm{d} x} \]

另外也可以根据墨卡托投影是等角投影4\(\angle \alpha = \angle \beta\) ,则有:

\[ tan \angle \alpha \approx \frac{PM}{QM} = \frac{R \cos \varphi \mathrm{d} \lambda }{R \mathrm{d} \varphi } \]

\[ tan \angle \beta = \frac{P'M'}{Q'M'} = \frac{\mathrm{d} x}{\mathrm{d} y} \]

那么:

\[ \frac{R \cos \varphi \mathrm{d} \lambda }{R \mathrm{d} \varphi } = \frac{\mathrm{d} x}{\mathrm{d} y} \]

显然同一条经线上的点,变换到墨卡托之后横坐标相同,而横坐标的值就是赤道弧线划过的长度,所以 \(x = R \cdot \lambda\),那么 \(\mathrm{d} x = R \times \mathrm{d} \lambda\)

消掉 \(\mathrm{d} x\)\(\mathrm{d} \lambda\) ,可得:

\[ \left \{ \begin{aligned} x'(\lambda ) &= R \\ y'(\varphi ) &=R \cdot \frac{1}{\cos \varphi } \cdot \mathrm{d} {\varphi} = R \sec \varphi \\ \end{aligned} \right. \]

对上式积分可得:

\[ \int dy = R \int \frac{1}{ \cos \varphi} d\varphi = R \int \sec \varphi d \varphi = R \ln(\sec \varphi + \tan \varphi ) + C \]

可得:

\[ y = R \ln \tan(\frac{\pi}{4} + \frac{\varphi }{2}) + C \]

根据初始条件可知 \(C = 0\) ,所以等角投影的公式:

\[ \left \{ \begin{aligned} x &= R(\lambda -\lambda _{0}) \\ y &= R\ln \left[\tan \left({\frac {\pi }{4}} + {\frac {\varphi }{2}}\right)\right] \\ \end{aligned} \right. \]

等角航线

之前讲过墨卡托投影的地图上,经线投影成一组平行线,两地之间的等方位角曲线(Rhumb line),在地图上是一条直线。航海家只需要保持方位角不变,不改变航线即可达到终点,所以在航海中得到广泛应用。但这条航线并不是两地之间的最短航线,我们知道球面上两点间最短距离是通过两点间大圆的劣弧,如下图所示。在航海或航空中,运用此特性而走最短距离的航线叫做大圆航线(Great Circle Route)。

Big Arc

参考文献


  1. Mercator projection↩︎

  2. Gerardus Mercator↩︎

  3. 高斯绝妙定理↩︎

  4. Mercator Projection↩︎