public interface ILcdGeodeticDatum extends Serializable
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.
Modifier and Type | Method and Description |
---|---|
Object |
clone()
Clones this
ILcdGeodeticDatum . |
void |
datum2refGeocSFCT(ILcdPoint aXYZPoint,
ILcd3DEditablePoint aXYZOutSFCT)
Conversion of geocentric coordinates from the geodetic datum into
geocentric coordinates for the reference geodetic datum.
|
void |
datum2refLLHSFCT(ILcdPoint aLLHPoint,
ILcd3DEditablePoint aLLHOut)
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.
|
ILcdEllipsoid |
getEllipsoid()
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. |
String |
getName()
Returns the name of the
ILcdGeodeticDatum . |
default Optional<String> |
getVerticalDatumName()
Returns a vertical datum name, if this geodetic datum defines one.
|
boolean |
hasNonZeroHeights()
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 |
ref2datumGeocSFCT(ILcdPoint aXYZPoint,
ILcd3DEditablePoint aXYZOutSFCT)
Conversion of a geocentric coordinate (reference geodetic datum) into
a geocentric coordinate of this geodetic datum.
|
void |
ref2datumLLHSFCT(ILcdPoint aLLHPoint,
ILcd3DEditablePoint aLLHOut)
Conversion of geodetic coordinates from reference geodetic datum into
this geodetic datum.
|
String getName()
ILcdGeodeticDatum
.ILcdGeodeticDatum
.ILcdEllipsoid getEllipsoid()
ILcdGeodeticDatum
.ILcdGeodeticDatum
.double getHeight(double aLon, double aLat)
ILcdGeodeticDatum
for the specified geodetic coordinates. These heights are expressed in meters with
respect to the ellipsoid of this ILcdGeodeticDatum
.aLon
- the longitude coordinate.aLat
- the latitude coordinate.ILcdGeodeticDatum
for the specified geodetic coordinates.boolean hasNonZeroHeights()
getHeight
returns non zero height values.
The method getHeight
will always return 0
, if this method
returns false
getHeight
returns non zero height
values, false otherwise.default Optional<String> getVerticalDatumName()
Optional
if no vertical datum is present.void datum2refGeocSFCT(ILcdPoint aXYZPoint, ILcd3DEditablePoint aXYZOutSFCT)
aXYZPoint
- geocentric coordinate of geodetic datum.aXYZOutSFCT
- geocentric coordinate in reference geodetic datum as side effect.void ref2datumGeocSFCT(ILcdPoint aXYZPoint, ILcd3DEditablePoint aXYZOutSFCT)
aXYZPoint
- geocentric coordinate in reference geodetic datum.aXYZOutSFCT
- geocentric coordinate in this geodetic datum as side effect.void datum2refLLHSFCT(ILcdPoint aLLHPoint, ILcd3DEditablePoint aLLHOut)
aLLHPoint
- geodetic coordinate represented in this geodetic datum.aLLHOut
- geodetic coordinate in reference geodetic datum as side effect.void ref2datumLLHSFCT(ILcdPoint aLLHPoint, ILcd3DEditablePoint aLLHOut)
aLLHPoint
- geodetic coordinate represented in reference geodetic datum.aLLHOut
- geodetic coordinate in this geodetic datum as side effect.void geoc2llhSFCT(ILcdPoint aXYZGeocPoint, ILcd3DEditablePoint aLLHPointSFCT)
aXYZGeocPoint
- geocentric 3D point.aLLHPointSFCT
- lonLatHeight coordinates to be set.void llh2geocSFCT(ILcdPoint aLLHPoint, ILcd3DEditablePoint aXYZGeocPointSFCT)
aLLHPoint
- lonLatHeight point.aXYZGeocPointSFCT
- Geocentric coordinates to be set.boolean equals(Object aGeodeticDatum)
Object
.boolean equals2D(Object aGeodeticDatum)
ILcdGeodeticDatum
is equal to another given Object
's horizontal datum.aGeodeticDatum
- Object to compare with.Object clone()
ILcdGeodeticDatum
.ILcdGeodeticDatum
.