UNCLASSIFIED

GeographicTranslator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
MSP::CCS::GeoidLibrary Class Reference

#include <GeoidLibrary.h>

Public Member Functions

 ~GeoidLibrary (void)
 
void convertEllipsoidToEGM96FifteenMinBilinearGeoidHeight (double longitude, double latitude, double ellipsoidHeight, double *geoidHeight)
 
void convertEllipsoidToEGM96VariableNaturalSplineHeight (double longitude, double latitude, double ellipsoidHeight, double *geoidHeight)
 
void convertEllipsoidToEGM84TenDegBilinearHeight (double longitude, double latitude, double ellipsoidHeight, double *geoidHeight)
 
void convertEllipsoidToEGM84TenDegNaturalSplineHeight (double longitude, double latitude, double ellipsoidHeight, double *geoidHeight)
 
void convertEllipsoidToEGM84ThirtyMinBiLinearHeight (double longitude, double latitude, double ellipsoidHeight, double *geoidHeight)
 
void convertEllipsoidHeightToEGM2008GeoidHeight (double longitude, double latitude, double ellipsoidHeight, double *geoidHeight)
 
void convertEGM96FifteenMinBilinearGeoidToEllipsoidHeight (double longitude, double latitude, double geoidHeight, double *ellipsoidHeight)
 
void convertEGM96VariableNaturalSplineToEllipsoidHeight (double longitude, double latitude, double geoidHeight, double *ellipsoidHeight)
 
void convertEGM84TenDegBilinearToEllipsoidHeight (double longitude, double latitude, double geoidHeight, double *ellipsoidHeight)
 
void convertEGM84TenDegNaturalSplineToEllipsoidHeight (double longitude, double latitude, double geoidHeight, double *ellipsoidHeight)
 
void convertEGM84ThirtyMinBiLinearToEllipsoidHeight (double longitude, double latitude, double geoidHeight, double *ellipsoidHeight)
 
void convertEGM2008GeoidHeightToEllipsoidHeight (double longitude, double latitude, double geoidHeight, double *ellipsoidHeight)
 

Static Public Member Functions

static GeoidLibrarygetInstance ()
 
static void removeInstance ()
 

Protected Member Functions

 GeoidLibrary ()
 
 GeoidLibrary (const GeoidLibrary &gl)
 
GeoidLibraryoperator= (const GeoidLibrary &gl)
 

Friends

class GeoidLibraryCleaner
 

Detailed Description

The purpose of GEOID is to support conversions between WGS84 ellipsoid heights and WGS84 geoid heights.

ERROR HANDLING

This component checks parameters for valid values. If an invalid value is found, the error code is combined with the current error code using the bitwise or. This combining allows multiple error codes to be returned. The possible error codes are:

GEOID_NO_ERROR : No errors occurred in function
GEOID_FILE_OPEN_ERROR : Geoid file opening error
GEOID_INITIALIZE_ERROR : Geoid separation database can not initialize
GEOID_LAT_ERROR : Latitude out of valid range (-90 to 90 degrees)
GEOID_LON_ERROR : Longitude out of valid range
(-180 to 360 degrees)

REUSE NOTES

Geoid is intended for reuse by any application that requires conversion between WGS84 ellipsoid heights and WGS84 geoid heights.

REFERENCES

Further information on Geoid can be found in the Reuse Manual.

Geoid originated from : U.S. Army Topographic Engineering Center Geospatial Information Division 7701 Telegraph Road Alexandria, VA 22310-3864

LICENSES

None apply to this component.

RESTRICTIONS

Geoid has no restrictions.

ENVIRONMENT

Geoid was tested and certified in the following environments

  1. Solaris 2.5 with GCC 2.8.1
  2. MS Windows XP with MS Visual C++ 6.0

Definition at line 132 of file GeoidLibrary.h.

Constructor & Destructor Documentation

GeoidLibrary::~GeoidLibrary ( void  )

Definition at line 369 of file GeoidLibrary.cpp.

GeoidLibrary::GeoidLibrary ( )
protected

The constructor creates empty lists which are used to store the geoid separation data contained in the data files egm84.grd and egm96.grd.

The constructor now also instantiates the appropriate EGM2008 geoid separation interpolator.

Definition at line 357 of file GeoidLibrary.cpp.

GeoidLibrary::GeoidLibrary ( const GeoidLibrary gl)
protected

Definition at line 363 of file GeoidLibrary.cpp.

Member Function Documentation

void GeoidLibrary::convertEGM2008GeoidHeightToEllipsoidHeight ( double  longitude,
double  latitude,
double  geoidHeight,
double *  ellipsoidHeight 
)

The function convertEGM2008GeoidHeightToEllipsoidHeight( converts the specified EGM2008 geoid height at the specified geodetic coordinates to the equivalent ellipsoid height. It uses the EGM2008 gravity model, plus the bicubic spline interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]geoidHeight: Height above the geoid, meters
[out]ellipsoidHeight: Ellipsoid height, in meters

Definition at line 961 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEGM84TenDegBilinearToEllipsoidHeight ( double  longitude,
double  latitude,
double  geoidHeight,
double *  ellipsoidHeight 
)

The function convertEGM84TenDegBilinearToEllipsoidHeight converts the specified WGS84 geoid height at the specified geodetic coordinates to the equivalent ellipsoid height, using the EGM84 gravity model and the bilinear interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]geoidHeight: Geoid height, in meters.
[out]ellipsoidHeight: Ellipsoid height, in meters

Definition at line 863 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEGM84TenDegNaturalSplineToEllipsoidHeight ( double  longitude,
double  latitude,
double  geoidHeight,
double *  ellipsoidHeight 
)

The function convertEGM84TenDegNaturalSplineToEllipsoidHeight converts the specified WGS84 geoid height at the specified geodetic coordinates to the equivalent ellipsoid height, using the EGM84 gravity model and the natural spline interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]geoidHeight: Geoid height, in meters.
[out]ellipsoidHeight: Ellipsoid height, in meters

Definition at line 894 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEGM84ThirtyMinBiLinearToEllipsoidHeight ( double  longitude,
double  latitude,
double  geoidHeight,
double *  ellipsoidHeight 
)

The function convertEGM84ThirtyMinBiLinearToEllipsoidHeight converts the specified WGS84 geoid height at the specified geodetic coordinates to the equivalent ellipsoid height, using the EGM84 gravity model and the bilinear interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]geoidHeight: Geoid height, in meters.
[out]ellipsoidHeight: Ellipsoid height, in meters

Definition at line 929 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEGM96FifteenMinBilinearGeoidToEllipsoidHeight ( double  longitude,
double  latitude,
double  geoidHeight,
double *  ellipsoidHeight 
)

The function convertEGM96FifteenMinBilinearGeoidToEllipsoidHeight converts the specified WGS84 geoid height at the specified geodetic coordinates to the equivalent ellipsoid height, using the EGM96 gravity model and the bilinear interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]geoidHeight: Geoid height, in meters.
[out]ellipsoidHeight: Ellipsoid height, in meters

Definition at line 755 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEGM96VariableNaturalSplineToEllipsoidHeight ( double  longitude,
double  latitude,
double  geoidHeight,
double *  ellipsoidHeight 
)

The function convertEGM96VariableNaturalSplineToEllipsoidHeight converts the specified WGS84 geoid height at the specified geodetic coordinates to the equivalent ellipsoid height, using the EGM96 gravity model and the natural spline interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]geoidHeight: Geoid height, in meters.
[out]ellipsoidHeight: Ellipsoid height, in meters

Definition at line 786 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEllipsoidHeightToEGM2008GeoidHeight ( double  longitude,
double  latitude,
double  ellipsoidHeight,
double *  geoidHeight 
)

The function convertEllipsoidHeightToEGM2008GeoidHeight converts the specified WGS84 ellipsoid height at the specified geodetic coordinates to the equivalent height above the geoid. This function uses the EGM2008 gravity model, plus the bicubic spline interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]ellipsoidHeight: Ellipsoid height, in meters
[out]geoidHeight: Height above the geoid, meters

Definition at line 698 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEllipsoidToEGM84TenDegBilinearHeight ( double  longitude,
double  latitude,
double  ellipsoidHeight,
double *  geoidHeight 
)

The function convertEllipsoidToEGM84TenDegBilinearHeight converts the specified WGS84 ellipsoid height at the specified geodetic coordinates to the equivalent geoid height, using the EGM84 gravity model and the bilinear interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]ellipsoidHeight: Ellipsoid height, in meters
[out]geoidHeight: Geoid height, in meters.

Definition at line 594 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEllipsoidToEGM84TenDegNaturalSplineHeight ( double  longitude,
double  latitude,
double  ellipsoidHeight,
double *  geoidHeight 
)

The function convertEllipsoidToEGM84TenDegNaturalSplineHeight converts the specified WGS84 ellipsoid height at the specified geodetic coordinates to the equivalent geoid height, using the EGM84 gravity model and the natural splineinterpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]ellipsoidHeight: Ellipsoid height, in meters
[out]geoidHeight: Geoid height, in meters.

Definition at line 629 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEllipsoidToEGM84ThirtyMinBiLinearHeight ( double  longitude,
double  latitude,
double  ellipsoidHeight,
double *  geoidHeight 
)

The function convertEllipsoidToEGM84ThirtyMinBiLinearHeight converts the specified WGS84 ellipsoid height at the specified geodetic coordinates to the equivalent geoid height, using the EGM84 gravity model and the bilinear interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]ellipsoidHeight: Ellipsoid height, in meters
[out]geoidHeight: Geoid height, in meters.

Definition at line 664 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEllipsoidToEGM96FifteenMinBilinearGeoidHeight ( double  longitude,
double  latitude,
double  ellipsoidHeight,
double *  geoidHeight 
)

The function convertEllipsoidToEGM96FifteenMinBilinearGeoidHeight converts the specified WGS84 ellipsoid height at the specified geodetic coordinates to the equivalent geoid height, using the EGM96 gravity model and the bilinear interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]ellipsoidHeight: Ellipsoid height, in meters
[out]geoidHeight: Geoid height, in meters.

Definition at line 482 of file GeoidLibrary.cpp.

void GeoidLibrary::convertEllipsoidToEGM96VariableNaturalSplineHeight ( double  longitude,
double  latitude,
double  ellipsoidHeight,
double *  geoidHeight 
)

The function convertEllipsoidToEGM96VariableNaturalSplineHeight converts the specified WGS84 ellipsoid height at the specified geodetic coordinates to the equivalent geoid height, using the EGM96 gravity model and the natural spline interpolation method.

Parameters
[in]longitude: Geodetic longitude in radians
[in]latitude: Geodetic latitude in radians
[in]ellipsoidHeight: Ellipsoid height, in meters
[out]geoidHeight: Geoid height, in meters.

Definition at line 517 of file GeoidLibrary.cpp.

GeoidLibrary * GeoidLibrary::getInstance ( )
static

The function getInstance returns an instance of the GeoidLibrary

Returns
instance of GeoidLibrary

Definition at line 317 of file GeoidLibrary.cpp.

GeoidLibrary & GeoidLibrary::operator= ( const GeoidLibrary gl)
protected

Definition at line 379 of file GeoidLibrary.cpp.

void GeoidLibrary::removeInstance ( )
static

The function removeInstance removes this GeoidLibrary instance from the total number of instances.

Definition at line 329 of file GeoidLibrary.cpp.

Friends And Related Function Documentation

friend class GeoidLibraryCleaner
friend

Definition at line 134 of file GeoidLibrary.h.