The coordinate system used by GPS is WGS 84, which expresses altitudes as a "height above ellipsoid". Because this ellipsoid is a mathematical simplification, the height given by GPS does not necessarily reflect the height above the actual ground beneath.
The Earth Gravitational Models published by the National Geospatial Intelligence Agency are a way to approximate how high an altitude given in WGS 84 coordinates truly is above the ground.
This library includes data derived from EGM 2008 along with an interpolation function. Together, these allow for an approximate offset to be obtained for arbitrary points on the globe.
The src/geoid.rs
file is generated by a Python script (generate.py
) that
runs NGA's Fortran interpolation program. In order to run the script, you'll
need to download the EGM model data from the NGA's website.
You will also need to install gfortran
. There are a few ways to do this:
- On macOS, through Homebrew with
brew install gfortran
. - Use the included Nix dev shell with
nix develop
.
For convenience, you can run generate_geoid.sh
which will download and verify
the model data from NGA, compile the interpolation program, and update
src/geoid.rs
.