C++ Geodetic Library

December 28, 2025 · View on GitHub

clang-format Check Linux CI build

Introduction

This is a C++ library meant to provide implementations of the most commonly used geodetic calculations. The whole library is wrapped around the dso namespace.

Dependancies

This library uses the eigen library for basic matrix manipulation and linear algebra.

Compilation / Installation

Building the library requires cmake Supposing you are located in the top-level directory:

## to build in a folder named "build":
$> cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
$> cmake --build build --target all --config Release -- -j4
## (Optional) run tests
$> ctest --test-dir build
## Install, system-wide (needs root)
$> cd build && sudo make install

The Library

Coordinate Types

A point PP can be defined can be described (in 3-D space) by any of the following coordinate types:

  • Cartesian, using P=(x,y,z)P = (x,y,z); unless otherwise stated, in SI units (i.e. meters)
  • Geodetic, using P=(λ,ϕ,h)P= (\lambda , \phi , h), λ\lambda denoting the longitude in range πλπ-\pi \le \lambda \le \pi, ϕ\phi denoting the geodetic latitude in range π2ϕπ2\frac{\pi}{2} \le \phi \le \frac{\pi}{2} and hh denotes the ellipsoidal height. Unless otherwise stated, ellipsoidal coordinate sets are given/derived in this order (i.e. (λ,ϕ,h)(\lambda, \phi, h)) in units of radians and meters. Note that geodetic coordinates are based on a reference ellipsoid.
  • Spherical

Coordinate Transformations

  • Test : Geodetic -> Cartesian -> Geodetic results in max discrepancies (between the input and ouput geodetic coordinates) in the range: maxδϕ1e10arcsecmax\delta \phi \approx 1e^{-10} arcsec, maxδλ5e11arcsecmax\delta \lambda \approx 5e^{-11} arcsec and maxδheight4e9mmax\delta height \approx 4e^{-9} m. See here).

  • Test : Spherical -> Cartesian -> Spherical results in max discrepancies (between the input and ouput spherical coordinates) in the range: maxδϕgeocentric1e8arcsecmax\delta \phi _{geocentric} \approx 1e^{-8} arcsec, maxδλ5e11arcsecmax\delta \lambda \approx 5e^{-11} arcsec and maxδheight2e9mmax\delta height \approx 2e^{-9} m. See here).

PREPARE Funding

This study was funded under the project PREPARE (HFRI PN:15562) in the framework of H.F.R.I call “Basic research Financing (Horizontal support of all Sciences)” under the National Recovery and Resilience Plan “Greece 2.0” funded by the European Union – NextGenerationEU