Allow multiple 3d transformation operations in one request
Problem statement:
Some transformation methods operate in 3D space. Simple ellipsoid translations/rotations/scaling causes points move relative to the other ellipsoidal reference surface due to verticals not being parallel.
- Schlumberger’s implementation using Esri lets Esri do the leg-work in 3D when two datum transformations are applied in a sequence, e.g. via the WGS 84 hub. The CRS Converter’s integration test was using such an example.
- The SIS implementation always operates in 2D, driven by the dimensionality of the involved geographic2D CRSs.
- If the operations are split into individual requests to Schlumberger’s CRS Converter the result is close to identical. This is good news. Direct conversions/transformations cause a systematic, visible drift compared to the respective other implementation.
Solution:
When 2 transformations are done in sequence, calculate the z shift for each transformation and pass it along to the next transformation. The z shift will be undone before returning the result.
The 3d transformation will only be done for the following transformations:
- Geocentric_Translation
- Molodensky
- Coordinate_Frame
- Position_Vector
- Molodensky_Badekas