Skip to main content

pure Python coordinate conversions, following convention of several popular Matlab routines.

Project description

image image image image image image Language grade: Python Maintainability image PyPi Download stats

Python 3-D coordinate conversions

3-D geographic coordinate conversions, with API similar to popular $1000 Matlab Mapping Toolbox routines for:

PyMap3D is intended for non-interactive use on massively parallel (HPC) and embedded systems. Includes some relevant Vallado algorithms.

API docs

Prerequisites

  • Python ≥ 3.5 or PyPy3

References to AstroPy are optional, algorithms from Vallado and Meeus are used if AstroPy is not present.

Install

pip install pymap3d

or for the latest development code:

git clone https://github.com/scivision/pymap3d
cd pymap3d
pip install -e .

One can verify Python functionality after installation by:

pip install -e .[tests]
pytest -rsv

Usage

Where consistent with the definition of the functions, all arguments may be arbitrarily shaped (scalar, N-D array).

import pymap3d as pm

x,y,z = pm.geodetic2ecef(lat,lon,alt)

az,el,range = pm.geodetic2aer(lat, lon, alt, observer_lat, observer_lon, 0)

Python argument unpacking can be used for compact function arguments with scalars or arbitrarily shaped N-D arrays:

aer = (az,el,slantrange)
obslla = (obs_lat,obs_lon,obs_alt)

lla = pm.aer2geodetic(*aer,*obslla)

where tuple lla is comprised of scalar or N-D arrays (lat,lon,alt).

Functions

Popular mapping toolbox functions ported to Python include the following, where the source coordinate system (before the "2") is converted to the desired coordinate system:

aer2ecef  aer2enu  aer2geodetic  aer2ned
ecef2aer  ecef2enu  ecef2enuv  ecef2geodetic  ecef2ned  ecef2nedv
ecef2eci  eci2ecef  eci2aer  aer2eci
enu2aer  enu2ecef   enu2geodetic
geodetic2aer  geodetic2ecef  geodetic2enu  geodetic2ned
ned2aer  ned2ecef   ned2geodetic
azel2radec radec2azel
vreckon vdist
lookAtSpheroid
track2

Additional functions:

loxodrome_inverse: rhumb line distance and azimuth between ellipsoid points (lat,lon) akin to Matlab distance('rh', ...) and azimuth('rh', ...)

Abbreviations:

Caveats

  • Atmospheric effects neglected in all functions not invoking AstroPy. Would need to update code to add these input parameters (just start a GitHub Issue to request).
  • Planetary perturbations and nutation etc. not fully considered.

Notes

As compared to PyProj:

  • PyMap3D does not require anything beyond pure Python + Numpy.
  • PyMap3D API is similar to Matlab Mapping Toolbox, while PyProj's interface is quite distinct
  • PyMap3D intrinsically handles local coordinate systems such as ENU, while for PyProj ENU requires some additional effort.
  • PyProj is oriented towards points on the planet surface, while PyMap3D handles points on or above the planet surface equally well, particularly important for airborne vehicles and remote sensing.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymap3d-1.7.14.tar.gz (29.7 kB view details)

Uploaded Source

File details

Details for the file pymap3d-1.7.14.tar.gz.

File metadata

  • Download URL: pymap3d-1.7.14.tar.gz
  • Upload date:
  • Size: 29.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.23.3 CPython/3.7.2

File hashes

Hashes for pymap3d-1.7.14.tar.gz
Algorithm Hash digest
SHA256 6fdad24344286e17d8ffb8ee4c8f7a1ca742479d00200169f4b59cc20fc87039
MD5 aed20d435f62796c63a68c21e54e482e
BLAKE2b-256 8773606e7773817bdc83be8c10bfac231d0660c44993576af431e3fd0199449b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page