Atlaslog / Field Notes / Coordinates & projections
Field note · Coordinates & projections
CGCS2000 and WGS84 mixed: 0.4 m error at large scale
Quick answer
CGCS2000 and WGS84 share an almost identical ellipsoid, so tutorials call them interchangeable. Epoch drift of about 3 cm/year in China accumulates to roughly 0.4 m by 2026, which only fails at 1:500 scale.
Symptom
- Control point 108.9401740, 34.3415680 in CGCS2000 and an RTK point with the same printed coordinates overlap 0.4 m apart on a 1:500 map, 0.8 mm on paper.
- Projected to EPSG:4546 the two differ by x 0.31 m and y 0.26 m, a combined 0.40 m toward the south-east.
- proj4js reports zero difference because it applies no datum shift between 4490 and 4326.
Checklist
- Confirm the EPSG code of both datasets; many systems store 4490 data tagged as 4326.
- Take the same physical location from both sources, project to one plane, and measure the planar distance.
- Divide the difference by the number of years; about 3 cm/year indicates epoch drift rather than a projection error.
- Check whether any seven- or four-parameter transformation was applied at all.
- Test with proj4js and note that towgs84 defaults to 0, so it will show no difference.
Fix
Store everything as CGCS2000 and run a datum normalisation on WGS84 input; without official parameters, solve a four-parameter transform from three or more common points and keep residuals under 5 cm.
Code
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)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] }
];
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)
];
}
Watch out
- Quoting 'CGCS2000 equals WGS84' as a universal rule; it only holds at small scales or centimetre tolerances.
- Applying a fabricated seven-parameter set without check points, which can move the data further than the 0.4 m it was meant to remove.
English edition written for Atlaslog from the original Chinese field note. Code is unchanged and runs as-is.
Atlaslog (2026). CGCS2000 and WGS84 mixed: 0.4 m error at large scale. https://www.jingweizhi.com/en/cookbook/cgcs2000-wgs84-mix.html (accessed 2026-11-03).