The base class of operation methods performing a translation, rotation and/or scale in geocentric coordinates.
Those methods may or may not include a Geographic/Geocentric conversion before the operation in geocentric domain,
depending on whether or not implementations extend the GeocentricAffineBetweenGeographic subclass.
Note on class name:
the GeocentricAffine class name is chosen as a generalization of GeocentricTranslation.
"Geocentric translations" is an operation name defined by EPSG.
The tolerance factor for comparing the BursaWolfParameters values.
We use a tolerance of 1E-6 (0.01 / 10000) based on the knowledge
that the translation terms are in metres and the rotation terms have the same order of magnitude.
Actually we could use a value of zero, but we add a small tolerance for rounding errors.
public static finalorg.opengis.parameter.ParameterDescriptor<Double>TX
The operation parameter descriptor for the X-axis translation
(tX) parameter value. Valid values range
from negative to positive infinity. Units are metres.
Parameter names
EPSG:
X-axis translation
OGC:
dx
TY
public static finalorg.opengis.parameter.ParameterDescriptor<Double>TY
The operation parameter descriptor for the Y-axis translation
(tY) parameter value. Valid values range
from negative to positive infinity. Units are metres.
Parameter names
EPSG:
Y-axis translation
OGC:
dy
TZ
public static finalorg.opengis.parameter.ParameterDescriptor<Double>TZ
The operation parameter descriptor for the Z-axis translation
(tZ) parameter value. Valid values range
from negative to positive infinity. Units are metres.
The operation parameter descriptor for the Scale difference
(dS) parameter value.
Valid values range from negative to positive infinity.
Units are parts per million.
Constructs a provider with the specified parameters.
Parameters:
type - the operation type as an enumeration value.
parameters - description of parameters expected by this operation.
sourceDimensions - number of dimensions in the source CRS of this operation method.
sourceCSType - base interface of the coordinate system of source coordinates.
sourceOnEllipsoid - whether the operation needs source ellipsoid axis lengths.
targetDimensions - number of dimensions in the target CRS of this operation method.
targetCSType - base interface of the coordinate system of target coordinates.
targetOnEllipsoid - whether the operation needs target ellipsoid axis lengths.
redimensioned - providers for all combinations between 2D and 3D cases, or null.
GeocentricAffine
GeocentricAffine(GeocentricAffine.Type operationType,
org.opengis.parameter.ParameterDescriptorGroup parameters,
int sourceDimensions,
int targetDimensions,
GeodeticOperation[] redimensioned)
Constructs a provider with the specified parameters for an operation in Cartesian space.
Creates a math transform from the specified group of parameter values.
The default implementation creates an affine transform, but some subclasses
will wrap that affine operation into Geographic/Geocentric conversions.
Parameters:
factory - the factory to use for creating concatenated transforms.
values - the group of parameter values.
Returns:
the created math transform.
Throws:
org.opengis.util.FactoryException - if a transform cannot be created.
Creates parameter values for a Molodensky, Geocentric Translation or Position Vector transformation.
Parameters:
descriptor - the PARAMETERS constant of the subclass describing the operation to create.
parameters - Bursa-Wolf parameters from which to get the values.
isTranslation - true if the operation contains only translation terms.
Returns:
the operation parameters with their values initialized.
createParameters
public staticorg.opengis.parameter.ParameterValueGroupcreateParameters(org.opengis.referencing.cs.CoordinateSystem sourceCS,
org.opengis.referencing.cs.CoordinateSystem targetCS,
org.opengis.referencing.operation.Matrix datumShift,
DatumShiftMethod method)
Returns the parameters for creating a datum shift operation.
The operation method will be one of the GeocentricAffine subclasses,
unless the specified method argument is DatumShiftMethod.NONE.
If no single operation method can be used, then this method returns null.
This method does not change the coordinate system type.
The source and target coordinate systems can be both EllipsoidalCS or both CartesianCS.
Any other type or mix of types (e.g. a EllipsoidalCS source and CartesianCS target)
will cause this method to return null. In such case, it is caller's responsibility to apply
the datum shift itself in Cartesian geocentric coordinates.
Parameters:
sourceCS - the source coordinate system. Only the type and number of dimensions is checked.
targetCS - the target coordinate system. Only the type and number of dimensions is checked.
datumShift - the datum shift as a matrix, or null if there is no datum shift information.
method - the preferred datum shift method. Note that createParameters(…) may overwrite.
Returns:
the parameter values, or null if no single operation method can be found.
asDatumShift
public staticvoidasDatumShift(List<Object> transforms)
Given a transformation chain, conditionally replaces the affine transform elements by an alternative object
showing the Bursa-Wolf parameters. The replacement is applied if and only if the affine transform is a scale,
translation or rotation in the geocentric domain.
This method is invoked only by ConcatenatedTransform.getPseudoSteps() for the need of WKT formatting.
The purpose of this method is very similar to the purpose of AbstractMathTransform.beforeFormat(List, int,
boolean) except that we need to perform the forDatumShift(…) work only after beforeFormat(…)
finished its work for all ContextualParameters, including the EllipsoidToCentricTransform's one.
Parameters:
transforms - the full chain of concatenated transforms.