1. 坐标系基础

说实话,我刚入行那会儿,坐标系这事儿没少让我头疼。

明明都是经纬度,怎么有的叫WGS84,有的叫CGCS2000?明明都是平面坐标,高斯-克吕格和UTM到底差在哪?

后来踩的坑多了,才慢慢理清楚。今天我就把这些经验掰开揉碎了讲给你听。

1. 地球坐标系:WGS84 vs CGCS2000

先说说最基础的地球坐标系。说白了,就是用一个椭球体去逼近真实的地球形状。

WGS84(World Geodetic System 1984)是目前全球最通用的坐标系。GPS卫星用的就是它。它的椭球参数是这样的:

  • 长半轴 a = 6378137.0 m
  • 扁率 f = 1/298.257223563

CGCS2000(China Geodetic Coordinate System 2000)是中国自己的地心坐标系。2008年7月1日正式启用,替代了过去的北京54和西安80。

你可能会问:这两个坐标系差多少?

我直接告诉你答案:在大部分地区,WGS84和CGCS2000的差异在厘米级。但注意,这不是绝对的。我在做某省CORS站网项目时,发现局部区域差异能到0.5米。所以,千万别想当然地认为它们等价。

核心要点:

  • WGS84:全球通用,GPS原生坐标系
  • CGCS2000:中国法定坐标系,与WGS84在厘米级一致
  • 实际使用时,建议做七参数转换,别偷懒

2. 地心地固坐标系(ECEF)

ECEF,全称Earth-Centered Earth-Fixed。它把地球中心作为原点,Z轴指向北极,X轴指向本初子午线与赤道的交点,Y轴按右手定则确定。

这个坐标系最大的好处是:坐标值稳定,不随观测位置变化。

举个例子。你在北京用GPS测一个点,得到的是WGS84经纬度。但如果你要做卫星轨道计算,或者做高精度差分定位,ECEF坐标系才是你的首选。

经纬度转ECEF的公式其实不复杂:

// 经纬度转ECEF (Python示例)
import math

def geodetic_to_ecef(lat, lon, alt):
    a = 6378137.0          # WGS84长半轴
    f = 1/298.257223563    # 扁率
    e2 = 2*f - f*f         # 第一偏心率平方
    
    lat_rad = math.radians(lat)
    lon_rad = math.radians(lon)
    
    N = a / math.sqrt(1 - e2 * math.sin(lat_rad)**2)
    
    x = (N + alt) * math.cos(lat_rad) * math.cos(lon_rad)
    y = (N + alt) * math.cos(lat_rad) * math.sin(lon_rad)
    z = (N * (1 - e2) + alt) * math.sin(lat_rad)
    
    return x, y, z

嗯,这里要注意:N是卯酉圈曲率半径,不是随便取的。我见过有人直接拿地球半径算,结果差了十几米。

3. 地理坐标系:经纬度

地理坐标系,就是我们最熟悉的经纬度。它用角度来描述地球上的位置。

纬度范围 -90° 到 +90°,经度范围 -180° 到 +180°。

但有个坑:经纬度不是平面坐标。你想想看,经度1°在赤道上是约111公里,但在北极附近可能只有几公里。所以直接用经纬度算距离,会出大问题。

我的经验:

如果你只是做地图展示,用经纬度没问题。但如果你要做距离计算、面积计算、或者导航路径规划,请务必转成投影坐标系。

4. 投影坐标系:高斯-克吕格与UTM

投影坐标系,就是把球面上的经纬度,映射到平面上的x,y坐标。

目前最常用的两种:高斯-克吕格投影和UTM投影。

4.1 高斯-克吕格投影

这是中国测绘的标准投影方式。它属于等角横轴切圆柱投影。

特点:

  • 中央经线不变形
  • 离中央经线越远,变形越大
  • 中国常用3°带和6°带

举个例子,北京大概在东经116.4°,属于3°带的第40带(中央经线120°)。

我曾经在做一个城市管线项目时,甲方给的数据是高斯-克吕格3°带,但没告诉我中央经线。我按6°带去算,结果坐标差了将近1公里。嗯,从那以后我拿到投影数据第一件事就是确认中央经线。

4.2 UTM投影

UTM(Universal Transverse Mercator)是国际通用的投影方式。它把地球分成60个带,每带6°。

和高斯-克吕格的主要区别:

对比项 高斯-克吕格 UTM
比例因子 中央经线 = 1 中央经线 = 0.9996
带宽 3°或6° 6°
适用范围 中国、俄罗斯等 全球通用
北伪东偏移 500km 500km(北半球)

你可能会问:为什么UTM中央经线的比例因子是0.9996?

其实是为了让整个带内的最大变形更均衡。中央经线稍微缩小一点,边缘的变形就不会太大。这个设计很巧妙。

5. 知识体系总览

下面这张图,是我自己梳理的坐标系知识体系。你看一眼,心里就有谱了。

坐标系知识体系总览 地球坐标系 WGS84 CGCS2000 地心地固坐标系 (ECEF) X, Y, Z 直角坐标 卫星定位基础 地理坐标系 纬度 (-90°~+90°) 经度 (-180°~+180°) 投影坐标系 高斯-克吕格 UTM 核心关系 地球坐标系 → 经纬度 → 投影坐标系 ECEF 是连接卫星定位与地面坐标的桥梁

6. 避坑指南

我曾经踩过的坑,你千万别再踩:

  1. 坐标系混用:WGS84的经纬度直接当CGCS2000用。虽然差异小,但高精度项目会出问题。
  2. 投影带选错:高斯-克吕格3°带和6°带混用,坐标差几公里。
  3. 中央经线不确认:拿到投影数据,第一件事就是确认中央经线是多少。
  4. 忽略高程系统:大地高和正常高不是一回事,差一个高程异常值。

我的建议:

做项目时,养成一个习惯:在数据文件头或者数据库字段里,明确标注坐标系信息。包括椭球、投影方式、中央经线、带号、高程基准。这样能省去后面很多麻烦。

好了,坐标系基础就讲到这里。这些概念你理解了,后面讲坐标转换和时间同步,就会轻松很多。