###############################################################################
The Helmert transformation
In this set of exercises we investigate the Helmert Transformation and some of
its properties. The Helmert transformation covers a wide range of configurations,
from simple translations of coordinates to the fully-fledged spatiotemporal
transformation. Wikipedia [0] and the PROJ documentation offer technical
details on the transformation [1]
The Helmert transformation works on geocentric, cartesian coordinates. See the
"conversions.gie" exercise for more info. In this exercise all coordinates are
already given as cartesian coordinates, so you only need to focus on the actual
transformation setup.
[0] https://en.wikipedia.org/wiki/Helmert_transformation
[1] https://proj.org/operations/transformations/helmert.html
###############################################################################
1. Simple coordinate translation
-------------------------------------------------------------------------------
The most basic application of the Helmert transformation is a translation of
the x-, y- and z-components of the coordinate. This is rarely a good fit for
large areas but locally a 3 parameter Helmert shift can be very effective. Even
though the 3 parameter translation doesn't fit particularly well in large areas
of use it is still commonly used between legacy and modern systems. In this
exercise we will use a transformation between ED50 in Italy (Sardinia) and
WGS84.
Hints:
- You can find the transformations parameters by running the following
command:
projinfo -o WKT2_2019 -k operation EPSG:1142
which returns the WKT2 definition of the transformation.
- Remember that the input to the Helmert transform is cartesian geocentric
coordinates (x, y z).
- Consult the documentation to find out how to set up the transformation:
https://proj.org/operations/transformations/helmert.html
-------------------------------------------------------------------------------
operation
tolerance 1 m
accept 4826177.7574 4049643.9762 991162.2529 # Sardinia (40N, 9E)
expect 4826080.7574 4049540.9762 991042.2529
-------------------------------------------------------------------------------
2. Translation and rotation
-------------------------------------------------------------------------------
For larger areas it is not enough to just rely on translation of coordinates.
In that case the solution is to include rotations of the axes and a scale
adjustment.
The rotational aspect of the transformation is handled by a set of three
rotation matrices. Two conventions for the application of the rotations are
in common use: Position Vector and Coordinate Frame. In this exercise we will
using Position Vector. See the PROJ documentation on the Helmert transformation
for further detail.
Hints:
- You can find the transformations parameters by running the following
command:
projinfo -o WKT2_2019 -k operation EPSG:1626
- Remember to specify the rotation convention with +convention
-------------------------------------------------------------------------------
operation
tolerance 1 m
accept 3496723.5936 743251.5442 5264442.2361
expect 3496639.7297 743156.3657 5264324.9341
-------------------------------------------------------------------------------
3. Position vector/Coordinate frame
-------------------------------------------------------------------------------
Effectively, the difference between the two rotation conventions is the sign of
the rotation parameters. In this exercise we will examine this property by
looking at a transformation between the German DHDN reference system and ETRS89.
First find the parameters for the EPSG:1309 transformation. In 3a below, enter
the parameters as reported by projinfo (using the coordinate frame convention).
Adapt the parameters to the position vector convention in 3b.
Hints:
- You can find the transformations parameters by running the following
command:
projinfo -o WKT2_2019 -k operation EPSG:1309
-------------------------------------------------------------------------------
* 3a:
operation +convention=coordinate_frame
accept 4067886.6403 571704.1839 4862789.0376
expect 4068519.1921 571728.6671 4863239.3787
* 3b:
operation +convention=position_vector
tolerance 1 m
accept 4067886.6403 571704.1839 4862789.0376
expect 4068519.1921 571728.6671 4863239.3787
-------------------------------------------------------------------------------
4. Kinematic transformation between ITRF2008 and ITRF2014
-------------------------------------------------------------------------------
The Helmert transformation also exists in a kinematic, or spatiotemporal,
version. This takes the evolution of a coordinate reference system over time
into account as well. This is done by pivoting about a reference epoch. The
14-parameter spatiotemporal Helmert is used when super high accuracy
transformations are needed. A good example of such a use case is transformations
between various realizations of ITRS and ETRS89. In this exercise we look at the
transformation from ITRF2008 to ITRF2014.
Hints:
- You can find the transformations parameters by running the following
command:
projinfo -o WKT2_2019 -s ITRF2008 -t ITRF2014
which returns the WKT2 definition of the transformation.
- Not all parameters need to be set.
- Pay attention to the units of the parameteres output by projinfo,
you may have to convert them to standard units (e.g. mm -> m).
- Note that the coordinates in the test now also includes a time tag in the
form of a decimalyear - This is always needed when doing spatiotemporal
transformations in PROJ. The time tag is the observation time of the
coordinate. Note that the time component of the coordinate is never
affected by the transformation.
-------------------------------------------------------------------------------
operation
tolerance 1 mm
accept 2952736.3768 1360917.6894 5468849.5615 2019.5
expect 2952736.3744 1360917.6871 5468849.5586 2019.5
-------------------------------------------------------------------------------