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

By Long Luo

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

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

如何绘制地图?

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

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

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

Map Mercator Projection

什么是墨卡托投影?

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

Mercator Projection

墨卡托公式的推导

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

f:PPf: P \rightarrow P'

那么则有函数 fxf_xfyf_y

{x=fx(λ,φ)y=fy(λ,φ)\left\{ \begin{aligned} x &= f_x(\lambda , \varphi ) \\ y &= f_y(\lambda , \varphi ) \\ \end{aligned} \right.

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

Infinity small

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

PM=r×dλ=RcosφdλPM = r \times \mathrm{d} \lambda = R \cos \varphi \mathrm{d} \lambda

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

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

Rdφdy=Rcosφdλdx\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αPMQM=RcosφdλRdφtan \angle \alpha \approx \frac{PM}{QM} = \frac{R \cos \varphi \mathrm{d} \lambda }{R \mathrm{d} \varphi }

tanβ=PMQM=dxdytan \angle \beta = \frac{P'M'}{Q'M'} = \frac{\mathrm{d} x}{\mathrm{d} y}

那么:

RcosφdλRdφ=dxdy\frac{R \cos \varphi \mathrm{d} \lambda }{R \mathrm{d} \varphi } = \frac{\mathrm{d} x}{\mathrm{d} y}

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

消掉 dx\mathrm{d} xdλ\mathrm{d} \lambda ,可得:

{x(λ)=Ry(φ)=R1cosφdφ=Rsecφ\left \{ \begin{aligned} x'(\lambda ) &= R \\ y'(\varphi ) &=R \cdot \frac{1}{\cos \varphi } \cdot \mathrm{d} {\varphi} = R \sec \varphi \\ \end{aligned} \right.

对上式积分可得:

dy=R1cosφdφ=Rsecφdφ=Rln(secφ+tanφ)+C\int dy = R \int \frac{1}{ \cos \varphi} d\varphi = R \int \sec \varphi d \varphi = R \ln(\sec \varphi + \tan \varphi ) + C

可得:

y=Rlntan(π4+φ2)+Cy = R \ln \tan(\frac{\pi}{4} + \frac{\varphi }{2}) + C

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

{x=R(λλ0)y=Rln[tan(π4+φ2)]\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 ↩︎