Skip to content

坐标系

坐标系总体分为两种:

  • 地理坐标系,描述的是一个球面上的真实位置,单位是度,分,秒
  • 投影坐标系:描述的是一个平面上的位置,单位是米,千米等等

地球近似

地球表面是凹凸不平的,有高山,有峡谷等等,过于复杂和多变,不利于描述,因此通常采用一个近似的模型来描述地球

大地水准面

假想海面静止,且延申至大陆,受到重力的影响下,形成一个不平滑过度的,凹凸不平的闭合曲面。它是最拟合地球的参考曲面了,需要注意的是大地水准面不等于海平面

以大地水准面来描述地球的话,是一个不规则的球形,可以近似为一个椭球体,成为地球椭球体

当我们使用地球椭球体来近似时,必然会出现一种状况,某些地方和椭球面贴合的较好,而某些地方贴合的较差。为了不同的目的,常常进行如下区分

  • 地心大地坐标系:将椭球的球心放在地球的中心(质心)。例如 WGS84,GCJ-02
  • 参心大地坐标系:为了使得局部更加贴合,将椭球的球心不放在地球的中心。例如 Beijing54

地理坐标系

地理坐标系可分为天文经纬度大地经纬度地心经纬度,GIS 中常用的是大地经纬度和地心经纬度

大地经纬度

  • 经度:参考椭球面上某点的大地子午面与本初子午面间的两面角,东正西负;
  • 纬度:参考椭球面上某点的法线与赤道平面的夹角,北正南负;
  • 高: 某点沿法线方向到参考椭球面的距离

地心经纬度

  • 经度:参考椭球面上某点的大地子午面与本初子午面间的两面角,东正西负;
  • 纬度:参考椭球面上某点的法线与赤道平面的夹角,北正南负;
  • 地心距: 某点与地心的距离

可以看出大地经纬度和地心经纬度区别不大,只是参考系不同

投影坐标系

由于椭球体无法完全展开为一个平面,当我们需要在平面上绘制的时候,就需要采用投影的方式,将 3D 转为 2D,再进行绘制。在投影的时候,不可避免的会产生变形,例如距离,比例,距离等变形

为了地图不同的用途,投影方式也不同,常用的投影方式如下

按照投影的变形分类

等角投影,等距投影,等积投影

按照投影的方法分类

圆柱投影,圆锥投影,方位投影

按照投影的轴分类

正轴投影,横轴投影,斜轴投影

高斯克吕格投影(GK 投影)

高斯克吕格投影为横轴等角切圆柱投影,是我国地图常用投影,存在如下特点

  1. 等角:局部形状不变形
  2. 中央经线无变形(非本初子午线,而是 GK 投影所选择的参考线),距离中央经线越远,形变越大
  3. 南北向距离在赤道以外会逐渐变形,变形量随着距离赤道的距离而增加。

墨卡托投影

墨卡托投影为正轴等角切圆柱投影,存在如下特点

  1. 等角:局部形状不变形
  2. 经纬度投影后均为直线,易于绘制
  3. 赤道不变形;距离赤道越远,面积变形越大(面积被放大)
  4. 无法完整显示高纬度,一般显示到 85 度

Web 墨卡托投影

web 墨卡托投影是 Google Map 在电子地图中所创造并使用的地图投影方法,是墨卡托投影地图的一个轻微变体,Web 墨卡托在所有比例尺下都使用球面公式,主要用于基于 Web 的地图程序,

  • 对于小比例尺地图:它与标准的墨卡托用的公式一样
  • 对于大比例尺地球:大比例尺的墨卡托地图通常使用投影的椭球面形式,这种差异在全球比例尺下是察觉不到的,但会导致局部地区的地图稍微偏离
// 投影,经纬度转投影坐标
function lonLatToMeters(lon: number, lat: number) {
const x = (EarthRadius * lon * Math.PI) / 180;
const y = EarthRadius * Math.atanh(Math.sin((lat * Math.PI) / 180));
return [x, y];
}
// 投影坐标转经纬度
function metersToLonLat(x: number, y: number) {
const lon = x / ((EarthRadius * Math.PI) / 180);
const lat = (180 / Math.PI) * Math.atan2(Math.sinh(y / EarthRadius), Math.cos(lon));
return [lon, lat];
}

通用横轴墨卡托投影(UTM 投影)

通用横轴墨卡托投影是横轴等角切圆柱投影

是一种国际标准化的地图投影法,使用笛卡儿坐标系,标记南纬 80° 至北纬 84° 之间的所有位置

其他

常说的火星坐标是什么呢?

火星坐标说的就是 GCJ-02(国测局制定的坐标系),它时再 WGS84 的基础上,对经纬度进行了一次加密,目的是为了防止非法获取经纬度信息,从而造成隐私泄露。因此 GPS 得到的经纬度直接在 GCJ-02 坐标系下会定位到错误的地点,有种到了火星的感觉,在坊间也将 GCJ-02 戏称为火星坐标系

可以调用地图 API 或者使用其他三方库来进行转换

参考