pymap3d
pure Python (no prereqs) coordinate conversions, following convention of several popular Matlab routines.
What it is and what it does
PyMap3D is a pure-Python library for converting between geographic and 3-D coordinate systems commonly used in geospatial, aerospace, and remote-sensing applications. It implements functions like geodetic2ecef, aer2geodetic, and enu2ned, mirroring the API of Matlab's Mapping Toolbox. The library requires only Python itself for basic use; NumPy and AstroPy are optional and enable vector operations and astronomical conversions respectively.
Designed for non-interactive, data-streaming scenarios on embedded systems and HPC clusters, pymap3d handles both scalar and array inputs seamlessly. It supports multiple ellipsoid models (defaulting to WGS84) and includes specialized functions for Vincenty distance calculations, loxodrome navigation, and latitude transformations. Atmospheric effects and full planetary perturbations are not modeled, but the library is well-suited for applications where coordinate transformations are the primary computational need.
Use it for:
- Convert GPS coordinates (lat/lon/alt) to Earth-centered Cartesian (ECEF) for satellite or aircraft tracking systems.
- Calculate azimuth, elevation, and range from an observer to a target for antenna pointing or radar applications.
- Transform between local coordinate frames (ENU, NED) for autonomous vehicle navigation and sensor fusion.
- Compute great-circle and rhumb-line distances and bearings between geographic points for route planning.
- Embed coordinate conversions in embedded or HPC applications where minimal dependencies and pure Python are required.
- Verify geospatial calculations against Matlab Mapping Toolbox reference implementations using the test suite.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Converts between geographic and 3-D coordinate systems (geodetic, ECEF, ENU, NED, AER, ECI) with pure Python and optional NumPy acceleration, following Matlab Mapping Toolbox conventions.
Yes, if you need coordinate conversions and prefer pure Python with minimal dependencies. The permissive license, low install friction, and Matlab-compatible API make it a solid choice for embedded systems, HPC, and scientific workflows. The aging maintenance status is a minor concern for a stable, narrowly-scoped library, but verify that version 3.2.0 addresses your specific use case before relying on it for production work.
Install
pymap3d on PyPI
pip
pip install pymap3duv
uv add pymap3dpoetry
poetry add pymap3dInstalling pymap3d
Before you install
Low friction: pure Python with no mandatory dependencies, distributed as a wheel. Maintenance status is aging (402 days since last release), but the package reached Production/Stable and supports current Python versions (3.9+).
License in practice
Permissive BSD license allows commercial and private use with minimal restrictions, making it suitable for embedded systems and HPC environments where license flexibility matters.
Quickstart
import pymap3d as pm
# Convert geodetic coordinates to ECEF
x, y, z = pm.geodetic2ecef(lat, lon, alt)
# Convert to azimuth, elevation, range from observer
az, el, rng = pm.geodetic2aer(lat, lon, alt, observer_lat, observer_lon, observer_alt)
Requires Python 3.9 or later. NumPy and AstroPy are optional; without them, only scalar data is supported (use list comprehension for vectors).
Verify before relying
- Whether the 402-day gap since last release indicates active maintenance or dormancy beyond the 'aging' classification.
- Performance characteristics on embedded systems or HPC clusters compared to compiled alternatives.
- Accuracy of astronomical conversions when AstroPy is not installed (algorithms from Vallado and Meeus mentioned but not detailed).
Package facts
| License | not declared (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | aging — 402 days since the last release |
| First released | |
| Downloads | 702,079/month — #5,287 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pymap3d-3.2.0-py3-none-any.whl
Keywords: coordinate-conversion, geodesy
Tags
More GIS packages
Shapely provides Python tools for creating,…
permissive · top 1,000 on PyPI
pyprojpyproj provides a Python interface to PROJ,…
permissive · top 1,000 on PyPI
geopandasGeoPandas extends pandas DataFrames to handle…
permissive · top 1,000 on PyPI
geopygeopy is a Python client for geocoding and…
permissive · top 5,000 on PyPI
pyogrioPyogrio provides fast, bulk-oriented read and…
permissive · top 5,000 on PyPI
h3h3 provides Python bindings to Uber's H3…
permissive · top 5,000 on PyPI
pygeodesyPyGeodesy provides pure Python implementations…
permissive · top 15,000 on PyPI
gswGSW-Python wraps the TEOS-10 seawater…
permissive · top 15,000 on PyPI
utmConverts between latitude/longitude coordinates…
permissive · top 5,000 on PyPI
pyGeoTileConverts between geographic coordinate systems…
permissive · top 15,000 on PyPI
mgrsConverts between MGRS (Military Grid Reference…
permissive · top 15,000 on PyPI
utideUTide performs tidal analysis and prediction on…
permissive · top 15,000 on PyPI
gps3Provides Python clients to connect to a GPSD…
permissive · top 15,000 on PyPI
geoarrow-typesProvides pure Python utilities to manage,…
permissive · top 15,000 on PyPI
gwcsGWCS provides tools for managing World…
unclear · top 15,000 on PyPI