Geographic Coordinate Systems

From FlightGear wiki
Revision as of 07:16, 22 September 2009 by T3r (Talk | contribs) (External link: Closed-form transformation between geodetic and ellipsoidal coordinates)

Jump to: navigation, search

FlightGear uses a set of different coordinate systems to express geographic locations. All these coordinates are based on the WGS84 Ellipsoid.

Geocentric and Geodetic Coordinates

Both geocentric and geodetic coordinates are expressed as a triple of latitude, longitude and altitude. In both cases, altitude is the height of the respective point above the surface of the Ellipsoid and longitude is the angle between the planes parallel to the earth axis and passing through the Greenwich Meridian respectively the point designated by the coordinates.

The difference between geocentric and geodetic coordinates lies in the definition of latitude:

  • In geocentric coordinates latitude is the angle between the equatorial plane and the line crossing through the earth's center and the point designated by the coordinates.
  • In geodetic coordinates latitude is the angle between the equatorial plane and the normal at the designated point, i.e. the vector standing perpendicular on the Ellipsoid at the designated point.

Cartesian Geocentric Coordinates

Cartesian geocentric coordinates are defined in terms of a cartesian coordinate system with

  • the center of the earth being the origin,
  • the z-axis aligned with the earth axis pointing north,
  • the x-axis going through the Greenwich Meridian at its intersection with the equator, and
  • the y-axis going through the intersection of the meridian at 90 degrees east and the equator.


The SimGear library provides static methods for conversion in the class SGGeodesy, to be found in simgear/math/SGGeodesy.hxx:

  • SGGeodesy::SGCartToGeod(const SGVec3<double>& cart, SGGeod& geod) converts a cartesian point to geodetic coordinates.
  • SGGeodesy::SGGeodToCart(const SGGeod& geod, SGVec3<double>& cart) converts a geodetic point to cartesian coordinates.
  • SGGeodesy::SGCartToGeoc(const SGVec3<double>& cart, SGGeoc& geoc) converts a cartesian point to geocentric coordinates.
  • SGGeodesy::SGGeocToCart(const SGGeoc& geoc, SGVec3<double>& cart) converts a geocentric point to cartesian coordinates.

Further, the classes SGGeod and SGGeoc (found in simgear/math/SGGeod.hxx and simgear/math/SGGeoc.hxx, respectively) provide static conversion methods for convenience, which use the methods listed above.

Note that most of these conversions are expensive to compute - check the external links to see how it works.

External links