skillfed

pymap3d

pure Python (no prereqs) coordinate conversions, following convention of several popular Matlab routines.

pymap3d v3.2.0 702.1K downloads/30d#5,287 on PyPI
Permissive license AGING released

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 pymap3d

uv

uv add pymap3d

poetry

poetry add pymap3d

Installing 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

Development Status :: 5 - Production/StableEnvironment :: ConsoleIntended Audience :: Science/ResearchLicense :: OSI Approved :: BSD LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3Topic :: Scientific/Engineering :: GIS

Tags

coordinate conversion geodetic ecefgeographic 3d coordinate transformsgeodesy python libraryearth-centered earth-fixed conversionazimuth elevation range calculationslocal coordinate systems enu nedlatitude longitude altitude conversion
geodesycoordinate-systemspure-python

More GIS packages