The geodesic routines in GeographicLib have been implemented as a native
Python library.  See

  https://geographiclib.sourceforge.io/html/python/

It is also possible to call the C++ version of GeographicLib directly
from Python and this directory contains a small example,
PyGeographicLib.cpp, which uses boost-python and the Geoid class to
convert heights above the geoid to heights above the ellipsoid.  More
information on calling boost-python, see

  https://www.boost.org/doc/libs/release/libs/python

An alternative to boost-python is provided by Cython.  For more
information, see below.

To build and install this interface, do

  mkdir BUILD
  cd BUILD
  cmake -D CMAKE_INSTALL_PREFIX=~/.local ..
  make
  make install

This assumes that you have installed GeographicLib somewhere that cmake
can find it.  If you want just to use the version of GeographicLib that
you have built in the top-level BUILD directory, include, e.g.,

  -D GeographicLib_DIR=../../BUILD

in the invocation of cmake (the directory is relative to the source
directory, wrapper/python).

"make install" installs PyGeographicLib in

  ~/.local/lib/python2.7/site-packages

which is in the default search path for python 2.7.  To convert 20m
above the geoid at 42N 75W to a height above the ellipsoid, do

  $ python
  >>> from PyGeographicLib import Geoid
  >>> geoid = Geoid("egm2008-1")
  >>> geoid.EllipsoidHeight(42, -75, 20)
  -10.671887499999997
  >>> help(Geoid.EllipsoidHeight)

Notes:

* The geoid data (egm2008-1) should be installed somewhere that
  GeographicLib knows about.

* This prescription applies to Linux machines.  Similar steps can be
  used on Windows and MacOSX machines.

* You will need the packages boost-python, boost-devel, python, and
  python-devel installed.

* CMakeLists.txt specifies the version of python to look for (version
  2.7).  This must match that used in boost-python.  To check do, e.g.,

    ldd /usr/lib64/libboost_python.so

* CmakeLists.txt looks for a shared-library version of GeographicLib.
  This is the default with cmake build on non-Windows platforms.  On
  Windows, use the cmake variable GEOGRAPHICLIB_LIB_TYPE to specify
  building a shared library.

Acknowledgment:

Thanks to Jonathan Takahashi <jtakahashi@gmail.com> for the sample code
in PyGeographicLib.cpp and the commands needed to compile and link this.

An alternative to boost-python is provided by Cython.  See

  https::/cython.org

Sergey Serebryakov offers the github project

  https://github.com/megaserg/geographiclib-cython-bindings

which provides a fast python interface to the geodesic routines.
