7-Parameter Helmert Transformation
The 7-parameter Helmert transformation performs a translation in the three principal directions of an earth-centered, earth-fixed coordinate system, as well as rotations around those axes and a scaling of the coordinates.
Type
type: helmert_7param
Parameter Estimation
This operator uses non-linear least squares estimation with the full rotation matrix (no small-angle approximation). The rotation matrix is composed of elementary rotations about the x, y, and z axes, resulting in an inherently non-linear problem that is solved iteratively using the Levenberg-Marquardt algorithm.
This method is suitable for transformations involving large rotations where the small-angle approximation is not valid. For small rotations, Helmert7ParamSmallAngle provides a faster closed-form solution.
Options
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
convention |
string |
Yes | - | Rotation convention (position_vector or coordinate_frame) |
x |
float |
No | 0.0 | Translation in X direction (meters) |
y |
float |
No | 0.0 | Translation in Y direction (meters) |
z |
float |
No | 0.0 | Translation in Z direction (meters) |
rx |
float |
No | 0.0 | Rotation about X axis (arc seconds) |
ry |
float |
No | 0.0 | Rotation about Y axis (arc seconds) |
rz |
float |
No | 0.0 | Rotation about Z axis (arc seconds) |
s |
float |
No | 0.0 | Scale factor (ppm) |
Example
operators:
- name: ITRF to ETRS89 (Full Rotation)
type: helmert_7param
convention: coordinate_frame
x: 0.5
y: 1.2
z: -0.9
rx: 0.001
ry: 0.002
rz: 0.003
s: 0.005
Mathematical Background
Forward Transformation
A coordinate in vector \(\mathbf{V}_a\) is transformed into vector \(\mathbf{V}_b\) using:
Where:
- \(\mathbf{T} = (x, y, z)^T\) is the translation vector
- \(s\) is the scale factor in parts per million (ppm)
- \(\mathbf{R}\) is the \(3 \times 3\) rotation matrix
Rotation Matrix
The rotation matrix is given as
Where \(r_x, r_y, r_z\) are the rotation angles in radians and:
Rotation Convention
Two conventions exists for the rotation matrix: Position Vector and Coordinate Frame. The above formulation is using the Position Vector convention. Transposing the rotation matrix \(\mathbf{R}\) changes the convention:
Inverse Transformation
The inverse transformation is given by:
Where \(\mathbf{R}^{-1} = \mathbf{R}^T\) for proper rotation matrices.
Parameter Estimation
The 7-parameter Helmert transformation relates source coordinates \(\mathbf{S}\) to target coordinates \(\mathbf{T}\) through:
The estimation is done using the full rotation matrix (not the small-angle approximation), making this a non-linear problem solved iteratively using the Levenberg-Marquardt algorithm.
Methodology
-
Coordinate Normalization: To improve numerical stability, coordinates are centered around their weighted centroids:
- \(\bar{x} = \sum(w_i \cdot x_i) / \sum(w_i)\)
- Normalized coordinates: \(X = S - \bar{x}\), \(Y = T - \bar{y}\)
-
Non-linear Least Squares: The transformation model in normalized coordinates:
\(\mathbf{Y} = \mathbf{t} + k \cdot \mathbf{X} \cdot \mathbf{R}^T + \varepsilon\) Where \(k = 1 + s \cdot 10^{-6}\) and \(\beta = [T_x, T_y, T_z, k, r_x, r_y, r_z]^T\) is the parameter vector.
-
Iterative Solution: The minimization problem \(\min ||r(\beta)||^2\) is solved using Levenberg-Marquardt (
scipy.optimize.least_squareswithmethod='lm'). -
Coordinate System Transformation: After convergence, translation parameters are transformed back to the original coordinate system:
References
- Sjöberg, L.E. (2013). Closed-form and iterative weighted least squares solutions of Helmert transformation parameters. Journal of Geodetic Science, 3(1), 7-11.
- Arun, K.S., Huang, T.S., & Blostein, S.D. (1987). Least-Squares Fitting of Two 3-D Point Sets. IEEE Transactions on Pattern Analysis and Machine Intelligence, PAMI-9(5), 698-700.