Returns the position vector transformation (geocentric domain) as an affine transform.
For transformations that do not depend on time, the formula is as below where
Ris a conversion factor from arc-seconds to radians:
R = toRadians(1″)
S = 1 +
#dS/1000000
┌ ┐ ┌ ┐ ┌ ┐
│ X' │ │ S -
#rZ*RS +
#rY*RS
#tX │ │ X │
│ Y' │ = │ +
#rZ*RS S -
#rX*RS
#tY │ │ Y │
│ Z' │ │ -
#rY*RS +
#rX*RS S
#tZ │ │ Z │
│ 1 │ │ 0 0 0 1 │ │ 1 │
└ ┘ └ ┘ └ ┘
This affine transform can be applied on
geocentric coordinates.
This is identified as operation method 1033 in the EPSG database.
Those geocentric coordinates are typically converted from geographic coordinates
in the region or timeframe given by
#getDomainOfValidity().
If the source datum and the
#getTargetDatum() do not use the same
DefaultGeodeticDatum#getPrimeMeridian(), then it is caller's responsibility
to apply longitude rotation before to use the matrix returned by this method.
Time-dependent transformation
Some transformations use parameters that vary with time (e.g. operation method EPSG:1053).
Users can optionally specify a date for which the transformation is desired.
For transformations that do not depends on time, this date is ignored and can be null.
For time-dependent transformations,
null values default to the transformation's
TimeDependentBWP#getTimeReference().
Inverse transformation
The inverse transformation can be approximated by reversing the sign of the 7 parameters before to use them
in the above matrix. This is often considered sufficient since position vector transformations
are themselves approximations. However Apache SIS will rather use
org.apache.sis.referencing.operation.matrix.MatrixSIS#inverse() in order to increase the chances
that concatenation of transformations A → B followed by B → A
gives back the identity transform.