finds.dev← search

// the find

pyproj4/pyproj

★ 1,215 · Python · MIT · updated Jun 2026

Python interface to PROJ (cartographic projections and coordinate transformations library)

pyproj is the standard Python wrapper around PROJ, the C library that handles coordinate reference system transformations and geodesic calculations. If you're doing anything with geospatial data in Python — reprojecting rasters, converting between WGS84 and UTM, computing geodesic distances — this is almost certainly already in your dependency tree via geopandas, rasterio, or shapely.

The Cython layer is well-done: you get near-C performance for batch transforms without dropping out of Python. The Transformer API properly exposes PROJ's authority database and handles datum shifts with grid-based corrections, which most hand-rolled wrappers get wrong. The CRS class can round-trip through WKT2, PROJJSON, and authority codes, making it genuinely useful for serialization and interchange. The geodesic calculations (Geod class) use Karney's algorithms, which are more accurate than the Vincenty formulas you'll find elsewhere.

It's a thin wrapper, not an abstraction — you still need to understand PROJ concepts like authority codes, datum ensembles, and area-of-use to use it correctly, and the error messages when you get it wrong are PROJ's C-level errors, not Python-friendly explanations. The build story is rough: it requires a matching PROJ C library at compile time, which means wheel availability matters a lot and source installs on unusual platforms are painful. The `always_xy` parameter footgun has caught many users — PROJ's axis ordering is spec-compliant but counterintuitive, and the default behavior has changed across versions in ways that break code silently. There's no async support, so bulk transforms in an async application require explicit thread-pool wrappers.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →