Geodesy is the scientific discipline that deals with the measurement and representation of the earth. Many mathematical models have been proposed to approximate the shape of the earth, ranging from flat-earth models to spherical approximations, ellipsoids, and geoids. Spherical and ellipsoidal approximations are used because of their mathematical simplicity. A more accurate approximation is the earth’s geoid, a hypothetical surface that coincides with the earth’s mean sea level. Although the earth’s geoid is considerably smoother than the actual surface of the earth, it is still highly irregular and therefore more difficult to represent and to use in computations. Note that there are many ellipsoid models (for example WGS84 and NAD83) and geoid models (for example EGM2008 and NAVD88) in use around the world.
The following sections describe what geodetic datums and geoids are and how they are supported in LuciadLightspeed.
A geodetic datum is a reference from which position measurements are made. A horizontal datum is a known and constant surface on which the positions of points can be precisely expressed. Because of their relative simplicity, ellipsoids are often used as the basis for horizontal datums. A vertical datum is an additional vertical reference for expressing the elevation of points. It is typically based on geoid or ellipsoid models.
Geodetic datums provide a basis for coordinate reference systems as described in LuciadLightspeed reference systems. For example, a geodetic datum based on an ellipsoid model of the earth’s surface allows to define geodetic lon-lat-height coordinates. The height coordinate may for example be computed with respect to the ellipsoid on which the lon-lat coordinates are defined (ellipsoidal height), or with respect to a geoid model (orthometric height), as shown in Figure 1, “Ellipsoidal versus orthometric heights”. Geodetic datums and the coordinate system based on them are widely used in surveying, mapping, and navigation. Refer to Projections for more information on map projections.
There are many datums in use today, as the basis for even more coordinate reference systems. Because referencing geodetic coordinates to the wrong datum can result in position errors of hundreds of meters, you need to be careful when conversing between coordinates defined with respect to different datums. You can find more information on coordinate transformations in Transformations between coordinate systems.
LuciadLightspeed provides the interface
ILcdGeodeticDatum to represent geodetic datums and support geodetic datum conversions. In this representation, a geodetic datum encompasses
both a horizontal datum and a vertical datum. The horizontal datum is based on an ellipsoid of the type
ILcdEllipsoid as described in Using an ILcdEllipsoid. A vertical datum is represented as a height function above this reference ellipsoid (see method
getHeight). Most instances, like WGS84, reference height values to their ellipsoid (their method
getHeight always returns zero).
TLcdGeodeticDatum is an implementation of
ILcdGeodeticDatum which is based on an eight-parameter transformation to a global reference datum. The transformation defines a rotation, a
translation, a scaling and a shift of the prime meridian. This transformation is applied to convert (lon, lat, height) coordinates
from one geodetic datum to the reference datum.
fTransformation.setSourceReference(fReference); fTransformation.setDestinationReference(fChosenGeodeticReference); fTransformation.destinationPoint2sourceSFCT(fLonLatCoordinate, fReferenceLonLatHeightPoint);
Program: Transforming coordinates to reference geodetic datum shows how to transform lon-lat-height coordinates from one
fChosenGeodeticDatum) to the reference
ILcdGeodeticDatum. The second argument of the method
datum2refLLHSFCT is of the type
ILcd3DEditablePoint, of which the coordinates are set to the result of the method.
In LuciadLightspeed this is called a side-effect method. Side-effect methods are used for performance reasons. In LuciadLightspeed, the names of side-effect methods end in SFCT.
fTransformation.setDestinationReference(fChosenGeodeticReference); fTransformation.sourcePoint2destinationSFCT(fReferenceLonLatHeightPoint, fLonLatCoordinate);
Program: Transforming coordinates from reference geodetic datum shows the inverse transformation: from the
ILcdGeodeticDatum back to the coordinates of the
By means of these two transformations, it is possible to transform coordinates from any
ILcdGeodeticDatum to any other
ILcdGeodeticDatum using the reference datum. The reference datum is an internally chosen
LuciadLightspeed has implementations of most geodetic datums used in the world. These implementations are grouped together
ILcdGeodeticDatumFactory. LuciadLightspeed has five implementations of
TLcdNIMA8350GeodeticDatumFactorywhich creates geodetic datums that were defined by NIMA
TLcdJPLGeodeticDatumFactorywhich creates geodetic datums that were defined by JPL
TLcdEPSGGeodeticDatumFactorywhich creates geodetic datums based on the EPSG database
TLcdGenericGeodeticDatumFactorya generic geodetic datum factory
TLcdGeoidGeodeticDatumFactorywhich creates some common geodetic datums with geoid models as vertical datums. This is currently the only factory creating geodetic datums that do not have ellipsoids as vertical datums. See the API reference documentation for
TLcdGeoidGeodeticDatumFactoryto see which geodetic datums with a geoid model as vertical datum are supported.
All factories use WGS-84 as the reference datum.
int id = fGeodeticDatumFactory.getAliasNames().findID(datum_name); ILcdGeodeticDatum chosen_datum = fGeodeticDatumFactory.createGeodeticDatum(id); fChosenGeodeticReference = new TLcdGeodeticReference(chosen_datum);
Program: Create a geodetic datum from a name shows how the particular instance
fGeodeticDatumFactory of the class
TLcdNIMA8350GeodeticDatumFactory returns a list of alias names of the class
TLcdAliasNames. By means of the method
findID on this
id of the
ILcdGeodeticDatum with name
datum_name is retrieved. Using this
fChosenGeodeticDatum is created by
ILcdGeodeticDatum is based on an
ILcdEllipsoid. The interface
ILcdEllipsoid provides geometrical calculations on an ellipsoid. LuciadLightspeed has a single implementation of the interface
LuciadLightspeed also provides a utility class
TLcdSphereUtil. This class implements the methods of the interface
ILcdEllipsoid as static methods. In this implementation the geometrical calculations are done on a sphere. Spherical calculations approximate
the calculations on the ellipsoid, but are more efficient.
The main methods of the interface
geodesicDistanceto return the shortest distance between two
forwardAzimuth2Dto return the azimuth direction of the shortest distance path between two
geodesicPointSFCTto return the geodetic coordinate of an
ILcdPointat a given distance in a given azimuth direction
Burkehard, Geodesy for the layman, 1985 (http://www.ngs.noaa.gov/PUBS_LIB/Geodesy4Layman/toc.htm)
Ewing, Mitchell, Introduction to Geodesy, 1970
Bomford, Geodesy, 1952