Atlaslog
Atlaslog / Field Notes / Coordinates & projections
Field note · Coordinates & projections

Seven-parameter scale not divided by 1e6 shifts 20 km points by 24 km

Quick answer

The Bursa-Wolf scale factor is in ppm and must be multiplied by 1e-6. Entering -1.2 instead of -1.2e-6 scales distances by about 1.2, and the error grows linearly from the origin.

Last verified 2026-11-03 · Multiple versions · Cite this page
Applies to: Bursa-Wolf 7-parameter · proj4js 2.11.x · custom transform scripts
Symptom
Checklist
  1. Take check points at three distances (1 km, 10 km, 20 km) and compute the residual at each.
  2. If the residual is proportional to distance, suspect a unit error in the scale or rotation parameters.
  3. Recompute with m as ppm and as a dimensionless number and compare residual magnitudes.
  4. Check the rotations too: arc-seconds must be divided by 206265 to become radians.
  5. Confirm the unit of each of the seven parameters before trusting any result.
Fix

Normalise units at the entry point: metres for delta-X/Y/Z, radians for omega-x/y/z, and m*1e-6 for the scale; then use only SI units inside the transform.

Code
X' = ΔX + (1 + m) · (X + ωz·Y - ωy·Z)
Y' = ΔY + (1 + m) · (Y - ωz·X + ωx·Z)
Z' = ΔZ + (1 + m) · (Z + ωy·X - ωx·Y)
其中 m 需代入 m_ppm × 1e-6
const pts = [
  { d: 1000,  err: 1180 },
  { d: 10000, err: 12010 },
  { d: 20000, err: 24050 }
];
console.log(pts.map(p => (p.err / p.d).toFixed(4)));
// [1.1800, 1.2010, 1.2025]  -> 比例约 1.2,等于 m 的值
Watch out
All 120 field notesChinese originalRunnable examples
English edition written for Atlaslog from the original Chinese field note. Code is unchanged and runs as-is.
Cite this page

Atlaslog (2026). Seven-parameter scale not divided by 1e6 shifts 20 km points by 24 km. https://www.jingweizhi.com/en/cookbook/seven-param-scale-ppm.html (accessed 2026-11-03).