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 flatearth 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.
What is a geodetic datum?
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 lonlatheight coordinates. The height coordinate may for example be computed with respect to the ellipsoid on which the lonlat 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.
Using an ILcdGeodeticDatum describes how geodetic datums are supported in LuciadLightspeed. The API reference provides all the necessary details in
the package geodesy
. There is a vast literature on geodesy for the interested reader. Literature on geodesy provides a few references.
Using an ILcdGeodeticDatum
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 eightparameter 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.
samples/gxy/transformation/geodeticToGrid/GridCalculation
)
fTransformation.setSourceReference(fReference);
fTransformation.setDestinationReference(fChosenGeodeticReference);
fTransformation.destinationPoint2sourceSFCT(fLonLatCoordinate,
fReferenceLonLatHeightPoint);
Program: Transforming coordinates to reference geodetic datum shows how to transform lonlatheight coordinates from one ILcdGeodeticDatum
(called 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 sideeffect method. Sideeffect methods are used for performance reasons. In LuciadLightspeed, the names of sideeffect methods end in SFCT. 
samples/gxy/transformation/geodeticToGrid/GridCalculation
)
fTransformation.setDestinationReference(fChosenGeodeticReference);
fTransformation.sourcePoint2destinationSFCT(fReferenceLonLatHeightPoint,
fLonLatCoordinate);
Program: Transforming coordinates from reference geodetic datum shows the inverse transformation: from the
reference ILcdGeodeticDatum
back to the coordinates of the fChosenGeodeticDatum
.
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 ILcdGeodeticDatum
.
LuciadLightspeed has implementations of most geodetic datums used in the world. These implementations are grouped together
in an ILcdGeodeticDatumFactory
. LuciadLightspeed has five implementations of ILcdGeodeticDatumFactory
:

TLcdNIMA8350GeodeticDatumFactory
which creates geodetic datums that were defined by NIMA 
TLcdJPLGeodeticDatumFactory
which creates geodetic datums that were defined by JPL 
TLcdEPSGGeodeticDatumFactory
which creates geodetic datums based on the EPSG database 
TLcdGenericGeodeticDatumFactory
a generic geodetic datum factory 
TLcdGeoidGeodeticDatumFactory
which 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 forTLcdGeoidGeodeticDatumFactory
to see which geodetic datums with a geoid model as vertical datum are supported.
All factories use WGS84 as the reference datum.
samples/gxy/transformation/geodeticToGrid/GridCalculation
)
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 TLcdAliasNames
, the id
of the ILcdGeodeticDatum
with name datum_name
is retrieved. Using this id
, an ILcdGeodeticDatum
called fChosenGeodeticDatum
is created by fGeodeticDatumFactory
.
In general, the creation of an ILcdGeodeticDatum
using an ILcdGeodeticDatumFactory
is done by giving the ILcdGeodeticDatumFactory
a java.util.Properties
object. For the specific ILcdGeodeticDatumFactory
properties, see ILcdGeodeticDatumFactory
and its implementations in the API reference.
Using an ILcdEllipsoid
An ILcdGeodeticDatum
is based on an ILcdEllipsoid
. The interface ILcdEllipsoid
provides geometrical calculations on an ellipsoid. LuciadLightspeed has a single implementation of the interface ILcdEllipsoid
: TLcdEllipsoid
.
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 ILcdEllipsoid
are:

geodesicDistance
to return the shortest distance between twoILcdPoint
objects 
forwardAzimuth2D
to return the azimuth direction of the shortest distance path between twoILcdPoint
objects 
geodesicPointSFCT
to return the geodetic coordinate of anILcdPoint
at a given distance in a given azimuth direction
LuciadLightspeed groups together instances of ILcdEllipsoid
in an interface ILcdEllipsoidFactory
. It has two factories that define most ellipsoids used in the world:

TLcdDMA1987bEllipsoidFactory
, which creates ellipsoids defined by DMA 
TLcdJPLEllipsoidFactory
, which creates ellipsoids defined by JPL
Literature on geodesy

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