pure Python coordinate conversions, following convention of several popular Matlab routines.
Project description
Python / Matlab / Fortran 3-D coordinate conversions
3-D coordinate conversions for Python, Matlab, GNU Octave and Fortran. Follows API of popular $1000 Matlab Mapping Toolbox routines.
- API docs:
For those not having:
AstroPy: lower accuracy fallback functions are included for some functions.
Numpy: without numpy, scalar inputs are handled with pure Python builtins.
Why not PyProj? PyMap3D does not require anything beyond pure Python. PyProj is very powerful and comprehensive, but requires a learning curve to use, particularly for Python users accustomed to Matlab.
Prereqs
Python PyMap3D: any of Python 2.6, 2.7, 3.3, 3.4, 3.5, 3.6, 3.7, … * optional: Numpy, AstroPy (for full functionality)
Matlab / GNU Octave: under matlab/
Fortran MapTran: under fortran/: any Fortran compiler (tested with gfortran)
Install
This repo is 3 separate packages, you can use them independently, they don’t rely on each other.
Python PyMap3D:
python -m pip install -e .
Fortran MapTran:
cd bin cmake .. make
Usage
Python
import pymap3d as pm
x,y,z = pm.geodetic2ecef(lat,lon,alt)
az,el,range = pm.geodetic2aer(lat, lon, alt, 42, -82, 0)
Matlab / GNU Octave
The syntax is reasonably compatible with the $1000 Matlab Mapping Toolbox. Under the matlab/ directory:
x,y,z = geodetic2ecef([],lat,lon,alt)
az,el,range = geodetic2aer(lat, lon, alt, 42, -82, 0)
Fortran
The Fortran API is simple like PyMap3D. Fortran 2008 standard is used, in particular Impure Elemental, which enables seamless support of scalar or array coordinate inputs. The subroutine last three arguments are typically the output (each subroutine is documented). Default precision is real64, set at the top of fortran/maptran.f90.
use maptran
call geodetic2ecef(lat,lon,alt, x,y,z)
call geodetic2aer(lat,lon,alt, -42., -82., 0.)
Functions
Popular mapping toolbox functions ported to Python include:
aer2ecef aer2enu aer2geodetic aer2ned ecef2aer ecef2enu ecef2enuv ecef2geodetic ecef2ned ecef2nedv ecef2eci eci2ecef enu2aer enu2ecef enu2ecefv enu2geodetic geodetic2aer geodetic2ecef geodetic2enu geodetic2ned ned2aer ned2ecef ned2ecefv ned2geodetic vreckon vdist azel2radec radec2azel
Caveats
Atmospheric effects neglected in all functions not invoking AstroPy. Need to update code to add these input parameters (just start a GitHub Issue to request).
Planetary perturbations and nutation etc. not fully considered.
Matlab / Octave
The matlab/ directory contains a subset of the Python conversion functions, usable from Matlab or GNU Octave. Mathworks currently charges $1000 for the Matlab Mapping Toolbox that provides these functions.
The full set of Python conversions can be accessed from Matlab >= R2014b by commands like:
lla = py.pymap3d.geodetic2ecef(x,y,z)
Matlab documentation generated by m2html.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.