Skip to content

This is a C++ library meant to provide implementation of the most commonly used geodetic algorithms.

Notifications You must be signed in to change notification settings

DSOlab/ggeodesy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C++ Geodetic Library

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
## Install, system-wide (needs root)
$> make install
## (Optional) run tests
$> ctest --test-dir build

The Library

Coordinate Types

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

  • Cartesian, using $P = (x,y,z)$; unless otherwise stated, in SI units (i.e. meters)
  • Geodetic, using $P= (\lambda , \phi , h)$, $\lambda$ denoting the longitude in range $-\pi \le \lambda \le \pi$, $\phi$ denoting the geodetic latitude in range $\frac{\pi}{2} \le \phi \le \frac{\pi}{2}$ and $h$ denotes the ellipsoidal height. Unless otherwise stated, ellipsoidal coordinate sets are given/derived in this order (i.e. $(\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\delta \phi \approx 1e^{-10} arcsec$, $max\delta \lambda \approx 5e^{-11} arcsec$ and $max\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\delta \phi _{geocentric} \approx 1e^{-8} arcsec$, $max\delta \lambda \approx 5e^{-11} arcsec$ and $max\delta height \approx 2e^{-9} m$. See here).