Interface ILcdGeodeticDatum

All Superinterfaces:
Serializable
All Known Implementing Classes:
TLcdGeodeticDatum

public interface ILcdGeodeticDatum extends Serializable
An ILcdGeodeticDatum is comprised of an ellipsoid which is fixed to the physical earth in some manner. It is used as a basis for positioning points and defining the dimensions of the earth. It encompasses both a horizontal and vertical datum. The horizontal datum is based on the ellipsoid while the vertical datum is represented as a height function above this reference ellipsoid. A common used height function is the EGM96 geoid model.

There are many geodetic datums in use around the world. Regional datums have an ILcdEllipsoid that approximates the shape of the geoid in a limited region. Global datums have an ILcdEllipsoid that approximates the entire global geoid and have their center at the gravity center of the earth. One cannot use results from interpreting values based on one datum as if they were based on another datum because then position errors are too large. An ILcdGeodeticDatum provides a way to perform geodetic datum conversions.

Classes implementing the ILcdGeodeticDatum interface need sufficient information to perform a transformation between the geodetic datum and the geodetic datum that is chosen as a global reference geodetic system (WGS_1984 ILcdEllipsoid). This transformation is typically described with 7 parameters: position shifts, angular rotations and a scale. In some cases this transformation can also be expressed with a simple 3-parameter transformation (only position shifts). Transformations are not limited to linear transformations thought. It is possible to create an implementation that performs non-linear transformations. One condition is that transformations must be reversible.

More information on geodetic datums can be found on Geodetic Datum Overview by Peter H. Dana.

  • Method Summary

    Modifier and Type
    Method
    Description
    Clones this ILcdGeodeticDatum.
    void
    Conversion of geocentric coordinates from the geodetic datum into geocentric coordinates for the reference geodetic datum.
    void
    Conversion of geodetic coordinates from this geodetic datum into reference geodetic datum.
    boolean
    equals(Object aGeodeticDatum)
    Checks equality with another given Object.
    boolean
    equals2D(Object aGeodeticDatum)
    Checks whether the horizontal datum of this ILcdGeodeticDatum is equal to another given Object's horizontal datum.
    void
    geoc2llhSFCT(ILcdPoint aXYZGeocPoint, ILcd3DEditablePoint aLLHPointSFCT)
    Coordinate conversion between Earth Centered, Earth Fixed XYZ Cartesian coordinate system and latitude-longitude-height for this geodetic datum.
    Gets the ellipsoid of the ILcdGeodeticDatum.
    double
    getHeight(double aLon, double aLat)
    Returns the height of the vertical datum of this ILcdGeodeticDatum for the specified geodetic coordinates.
    Returns the name of the ILcdGeodeticDatum.
    default Optional<String>
    Returns a vertical datum name, if this geodetic datum defines one.
    boolean
    Returns whether the method getHeight returns non zero height values.
    void
    llh2geocSFCT(ILcdPoint aLLHPoint, ILcd3DEditablePoint aXYZGeocPointSFCT)
    Coordinate conversion between latitude-longitude-height for this geodetic datum and Earth Centered, Earth Fixed XYZ Cartesian coordinate system.
    void
    Conversion of a geocentric coordinate (reference geodetic datum) into a geocentric coordinate of this geodetic datum.
    void
    Conversion of geodetic coordinates from reference geodetic datum into this geodetic datum.
  • Method Details

    • getName

      String getName()
      Returns the name of the ILcdGeodeticDatum.
      Returns:
      the name of the ILcdGeodeticDatum.
    • getEllipsoid

      ILcdEllipsoid getEllipsoid()
      Gets the ellipsoid of the ILcdGeodeticDatum.
      Returns:
      the ellipsoid of the ILcdGeodeticDatum.
    • getHeight

      double getHeight(double aLon, double aLat)
      Returns the height of the vertical datum of this ILcdGeodeticDatum for the specified geodetic coordinates. These heights are expressed in meters with respect to the ellipsoid of this ILcdGeodeticDatum.
      Parameters:
      aLon - the longitude coordinate.
      aLat - the latitude coordinate.
      Returns:
      the ellipsoidal height of the vertical datum of this ILcdGeodeticDatum for the specified geodetic coordinates.
      Since:
      9.0
    • hasNonZeroHeights

      boolean hasNonZeroHeights()
      Returns whether the method getHeight returns non zero height values. The method getHeight will always return 0, if this method returns false
      Returns:
      true if the method getHeight returns non zero height values, false otherwise.
      Since:
      9.0
    • getVerticalDatumName

      default Optional<String> getVerticalDatumName()
      Returns a vertical datum name, if this geodetic datum defines one.
      Returns:
      a vertical datum name, or an empty Optional if no vertical datum is present.
      Since:
      2018.0.02
    • datum2refGeocSFCT

      void datum2refGeocSFCT(ILcdPoint aXYZPoint, ILcd3DEditablePoint aXYZOutSFCT)
      Conversion of geocentric coordinates from the geodetic datum into geocentric coordinates for the reference geodetic datum.
      Parameters:
      aXYZPoint - geocentric coordinate of geodetic datum.
      aXYZOutSFCT - geocentric coordinate in reference geodetic datum as side effect.
    • ref2datumGeocSFCT

      void ref2datumGeocSFCT(ILcdPoint aXYZPoint, ILcd3DEditablePoint aXYZOutSFCT)
      Conversion of a geocentric coordinate (reference geodetic datum) into a geocentric coordinate of this geodetic datum.
      Parameters:
      aXYZPoint - geocentric coordinate in reference geodetic datum.
      aXYZOutSFCT - geocentric coordinate in this geodetic datum as side effect.
    • datum2refLLHSFCT

      void datum2refLLHSFCT(ILcdPoint aLLHPoint, ILcd3DEditablePoint aLLHOut)
      Conversion of geodetic coordinates from this geodetic datum into reference geodetic datum.
      Parameters:
      aLLHPoint - geodetic coordinate represented in this geodetic datum.
      aLLHOut - geodetic coordinate in reference geodetic datum as side effect.
    • ref2datumLLHSFCT

      void ref2datumLLHSFCT(ILcdPoint aLLHPoint, ILcd3DEditablePoint aLLHOut)
      Conversion of geodetic coordinates from reference geodetic datum into this geodetic datum.
      Parameters:
      aLLHPoint - geodetic coordinate represented in reference geodetic datum.
      aLLHOut - geodetic coordinate in this geodetic datum as side effect.
    • geoc2llhSFCT

      void geoc2llhSFCT(ILcdPoint aXYZGeocPoint, ILcd3DEditablePoint aLLHPointSFCT)
      Coordinate conversion between Earth Centered, Earth Fixed XYZ Cartesian coordinate system and latitude-longitude-height for this geodetic datum. The conversion only works within this geodetic datum.
      Parameters:
      aXYZGeocPoint - geocentric 3D point.
      aLLHPointSFCT - lonLatHeight coordinates to be set.
      Since:
      9.0
    • llh2geocSFCT

      void llh2geocSFCT(ILcdPoint aLLHPoint, ILcd3DEditablePoint aXYZGeocPointSFCT)
      Coordinate conversion between latitude-longitude-height for this geodetic datum and Earth Centered, Earth Fixed XYZ Cartesian coordinate system. The conversion only works within this geodetic datum.
      Parameters:
      aLLHPoint - lonLatHeight point.
      aXYZGeocPointSFCT - Geocentric coordinates to be set.
      Since:
      9.0
    • equals

      boolean equals(Object aGeodeticDatum)
      Checks equality with another given Object.
      Overrides:
      equals in class Object
      Parameters:
      aGeodeticDatum - Object to compare with.
      Returns:
      true if both objects are equal, false otherwise.
    • equals2D

      boolean equals2D(Object aGeodeticDatum)
      Checks whether the horizontal datum of this ILcdGeodeticDatum is equal to another given Object's horizontal datum.
      Parameters:
      aGeodeticDatum - Object to compare with.
      Returns:
      true if the horizontal datum of both objects are equal, false otherwise.
      Since:
      9.0
    • clone

      Object clone()
      Clones this ILcdGeodeticDatum.
      Returns:
      Clone of this ILcdGeodeticDatum.