经纬志
首页 / 实战手册 / 坐标与投影

CGCS2000 与 WGS84 混着用,大比例尺下差了 0.4 米

先看结论

小比例尺看不出来,一到 1:500 放样就发现控制点和实测点对不上。

最后验证 2026-11-03 · 多技术栈 · 更新 2026-10-29 · 引用本文

现象

测区控制点成果是 CGCS2000,坐标 108.9401740, 34.3415680; 现场用 RTK 采的点是 WGS84,108.9401740, 34.3415680 看起来一样。 但在 1:500 地形图上,两者叠合后水平错开约 0.4 米, 相当于图上 0.8 毫米,已经超过 1:500 地形图 0.05 毫米的图上精度要求。

把两份数据都投影到 EPSG:4546 后,x 相差 0.31 米,y 相差 0.26 米, 合成位移 0.40 米,方向指向东南。

原因

CGCS2000 的参考椭球是 GRS80,WGS84 的椭球是 WGS84 椭球,两者扁率差 1.1e-11,长半轴完全相同,因此椭球差异本身只有毫米级。 真正的差值来自基准实现:CGCS2000 固定在 2000.0 历元, 而 GPS 输出的 WGS84 坐标随 ITRF 框架历元漂移,中国区域每年约 3 厘米。 到 2026 年累计 26 年,水平差 0.4 米左右。

很多教程直接说「CGCS2000 与 WGS84 等价,可以互用」,这只在小比例尺或厘米级精度要求下成立。

比例尺图上 0.1 mm 对应实地0.4 米误差是否超限
1:100001.0 m不超限
1:20000.2 m接近限差
1:5000.05 m明显超限

排查过程

  1. 确认两套数据的 EPSG 码,很多系统把 4490 的数据标成 4326 存库。
  2. 取同一个实地位置的两套坐标,投影到同一平面后算平面距离,得到实际差值。
  3. 用差值除以年限,看是否接近 3 厘米/年,是则属于历元漂移而非投影错误。
  4. 检查是否有做七参数或四参数转换,没有做的话,0.4 米就是未做基准归化的正常残差。
const a = proj4('EPSG:4490', 'EPSG:4546', [108.9401740, 34.3415680]);
const b = proj4('EPSG:4326', 'EPSG:4546', [108.9401740, 34.3415680]);
console.log(a, b);
// 两者在本例中相同:proj4 默认把 4490 与 4326 当作同一基准(towgs84 全 0)

上一步的结果会暴露另一个问题:proj4js 默认不做基准转换, 它把 4490 和 4326 视为同一套经纬度,所以算出来完全一样。 真实差值必须通过控制点比对或带历元的七参数才能体现。

解决方案

工程上统一用 CGCS2000 存储,WGS84 数据入库前做一次基准归化。 没有官方七参数时,用测区内三个以上公共点求四参数,残差控制在 5 厘米内。

// 用公共点求四参数(最小二乘),再批量应用
// 公共点:WGS84 投影坐标 -> CGCS2000 平面坐标
const pairs = [
  { from: [308611.42, 3804888.31], to: [308611.73, 3804888.05] },
  { from: [312004.18, 3807215.66], to: [312004.51, 3807215.41] },
  { from: [305887.90, 3802333.07], to: [305888.19, 3802332.83] }
];
// 解出 dx, dy, 旋转, 尺度后:
function apply4p(x, y, p) {
  const c = Math.cos(p.rot), s = Math.sin(p.rot);
  return [
    p.dx + p.k * (x * c - y * s),
    p.dy + p.k * (x * s + y * c)
  ];
}

验证

用未参与解算的第四个公共点做检核,归化后平面残差应小于 0.05 米; 若残差仍在 0.4 米量级,说明公共点本身就不在同一基准上,需要重新获取。

const chk = apply4p(310120.55, 3804102.19, params);
const err = Math.hypot(chk[0] - 310120.88, chk[1] - 3804101.93);
console.assert(err < 0.05, '检核点残差 ' + err.toFixed(3) + ' m');

适用版本

项目版本 / 说明
CGCS2000EPSG:4490(地理 2D)、4479(地心)、4546~4554(3 度带)
WGS84EPSG:4326;GPS 输出随 ITRF 历元变化
proj4js2.9 及以上,towgs84 默认为 0,不做基准转换
QGIS3.28 及以上,可配置自定义基准转换
引用本文

经纬志(2026)。《CGCS2000 与 WGS84 混着用,大比例尺下差了 0.4 米》。https://www.jingweizhi.com/cookbook/cgcs2000-wgs84-mix.html(访问日期 2026-11-03)。