Class InterpolatedMolodenskyTransform

All Implemented Interfaces:
Serializable, Parameterized, Lenient­Comparable, Math­Transform

@Deprecated(since="1.4", forRemoval=true) public class InterpolatedMolodenskyTransform extends DatumShiftTransform
Deprecated, for removal: This API element is subject to removal in a future version.
This operation method is non-standard, of little use and has greater errors than intended.
Transforms between two geographic CRS by performing geocentric translations interpolated from a grid file, but using Molodensky approximation. This transformation is conceptually defined as a translation in geocentric coordinates as performed by Interpolated­Geocentric­Transform, but uses the Molodensy (non-abridged) approximation for performance reasons. Errors are less than 3 centimetres for the "France geocentric interpolation" (ESPG:9655). By comparison, the finest accuracy reported in the grid file for France is 5 centimetres.


This class transforms two- or three- dimensional coordinates from a geographic CRS to another geographic CRS. The changes between source and target coordinates are small (usually less than 400 metres), but vary for every position. Those changes are provided in a datum shift grid, usually loaded from one or two files.

Many datum shift grids like NADCON and NTv2 apply the interpolated translations directly on geographic coordinates. This relatively simple case is handled by Interpolated­Transform. But in the Interpolated­Molodensky­Transform case, the interpolated translations are rather the (tX, tY, tZ) parameters of a Molodensky transformation.

See Also:
  • Field Details

    • tX

      protected final double tX
      Shift along the geocentric X axis (toward prime meridian) in units of the semi-major axis of the source ellipsoid.
      See Also:
    • tY

      protected final double tY
      Shift along the geocentric Y axis (toward 90°E) in units of the semi-major axis of the source ellipsoid.
      See Also:
    • tZ

      protected final double tZ
      Shift along the geocentric Z axis (toward north pole) in units of the semi-major axis of the source ellipsoid.
      See Also:
    • semiMajor

      protected final double semiMajor
      Semi-major axis length (a) of the source ellipsoid.
    • eccentricitySquared

      protected final double eccentricitySquared
      The square of eccentricity of the source ellipsoid. This can be computed by ℯ² = (a²-b²)/a² where a is the semi-major axis length and b is the semi-minor axis length.
      See Also:
  • Constructor Details

    • InterpolatedMolodenskyTransform

      protected InterpolatedMolodenskyTransform(Ellipsoid source, boolean isSource3D, Ellipsoid target, boolean isTarget3D, DatumShiftGrid<Angle,Length> grid)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a transform from the specified parameters. This Interpolated­Molodensky­Transform class expects coordinate values in the following order and units:
      1. longitudes in radians relative to the prime meridian (usually Greenwich),
      2. latitudes in radians,
      3. optionally heights above the ellipsoid, in same units than the source ellipsoid axes.
      For converting geographic coordinates in degrees, Interpolated­Molodensky­Transform instances need to be concatenated with the following affine transforms:
      • Normalization before Interpolated­Molodensky­Transform:
        • Conversion of (λ,φ) from degrees to radians.
      • Denormalization after Interpolated­Molodensky­Transform:
        • Conversion of (λ,φ) from radians to degrees.
      After Interpolated­Molodensky­Transform construction, the full conversion chain including the above affine transforms can be created by Datum­Shift­Transform​.get­Contextual­Parameters().complete­Transform(factory, this)}.
      source - the source ellipsoid.
      is­Source3D - true if the source coordinates have a height.
      target - the target ellipsoid.
      is­Target3D - true if the target coordinates have a height.
      grid - the grid of datum shifts from source to target datum. The Datum­Shift­Grid​.interpolate­In­Cell(…) method shall compute (ΔX, ΔY, ΔZ) translations from source to target in the unit of source ellipsoid axes.
      See Also:
  • Method Details