Skip to content
Back to skills

Pyproj

ASecurity

"Guide Python geospatial workflows with pyproj for CRS definition

  • 247 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 9, 2026
toolspythongobashsqldebugginggitapidatabase

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 20 files and shows the line behind each finding

Scanned September 9, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill pyproj --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pyproj?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pyproj
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-pyproj/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-pyproj)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pyproj
description: "Guide Python geospatial workflows with pyproj for CRS definition
  and inspection, coordinate transformation, geodesic measurement, PROJ database
  queries, and safe CLI, data-directory, and grid operations."
disable-model-invocation: true
metadata:
  disco-role: operating
license: NOASSERTION
---

# pyproj operating guide

Use this skill when a task names `pyproj`, PROJ, EPSG/WKT/PROJJSON/CF coordinate
reference systems, CRS-to-CRS conversion, map projection, ellipsoidal distance
or area, UTM/AOI lookup, or PROJ data/grid diagnostics. It is a runtime guide
for the public package, not a maintainer guide for CI, release automation, or
building all optional integrations.

## Fast route

1. Check that a coherent `pyproj` installation imports and that its native PROJ
   runtime can locate `proj.db`. Use the read-only diagnostic linked from
   [`cli-data-and-network`](sub-skills/cli-data-and-network/SKILL.md) when the
   runtime is uncertain.
2. Normalize the user's coordinate convention, CRS representations, dimensions,
   units, geographic area, and required accuracy before choosing an API.
3. Read exactly the focused route below, then its linked references. Do not use
   a numeric result as proof that axis order, datum operation, grid availability,
   or units were correct.

## Focused routes

- [`crs-and-database`](sub-skills/crs-and-database/SKILL.md) — construct,
  inspect, compare, serialize, and query `CRS`, datums, axes, operations,
  authorities, areas of use, AOIs, UTM candidates, and PROJ database records.
- [`coordinate-transformations`](sub-skills/coordinate-transformations/SKILL.md)
  — execute reusable `Transformer` operations, pipelines, `TransformerGroup`
  selection, projection-only `Proj`, bounds, arrays, time, and grid-aware
  validation.
- [`geodesic-calculations`](sub-skills/geodesic-calculations/SKILL.md) — use
  `Geod` for ellipsoidal forward/inverse work, azimuths, intermediate points,
  line length, polygon area/perimeter, and optional Shapely adapters.
- [`cli-data-and-network`](sub-skills/cli-data-and-network/SKILL.md) — install
  or diagnose native runtime/data state, use CLI help/version commands, manage
  data directories, and plan explicit network-backed grid synchronization.

## Minimal installation and smoke check

For normal users, prefer a binary distribution:

```bash
python -m pip install pyproj
python -c "from pyproj import CRS, Geod, Transformer; print(CRS.from_epsg(4326).to_epsg()); print(Transformer.from_crs(4326, 3857, always_xy=True).transform(0, 0)); print(Geod(ellps='WGS84').inv(0, 0, 1, 1)[2])"
```

Conda-forge is an alternative for a coherent compiled stack:

```bash
conda create -n <new-env> -c conda-forge pyproj
conda run -n <new-env> python -c "import pyproj; print(pyproj.__version__, pyproj.proj_version_str)"
```

Do not casually mix pip and Conda packages. Core CRS, transformation, and
`Geod` workflows do not require remote transformation grids, although some
high-accuracy datum operations do. Treat Shapely, dataframe adapters, and
network grids as explicit optional surfaces.

## Shared operating rules

- Preserve authoritative CRS identifiers, WKT2, or PROJJSON when fidelity
  matters. PROJ4 strings are useful compatibility inputs but can lose metadata.
- Inspect `CRS.axis_info` before transforming. If application data is `(x, y)`
  or `(longitude, latitude)`, choose `always_xy=True` deliberately and record
  that interface contract.
- Use a reusable `Transformer` for CRS-to-CRS and datum changes. `Proj` is for
  projection within a datum, not a generic datum-shift converter.
- For `Geod`, coordinates are `(longitude, latitude)` and distances are metres;
  polygon areas are square metres and algebraically signed.
- Keep network access disabled unless explicitly approved. Never silently
  download grids, change a data directory, or treat a ballpark operation as an
  exact replacement.
- When native import, `proj.db`, or SQLite errors appear, stop API debugging
  and follow the runtime recovery in
  [`references/troubleshooting.md`](references/troubleshooting.md).

## Shared references and helper

- Read [`references/api-overview.md`](references/api-overview.md) for the
  package surface and choosing between CRS, Transformer, Proj, and Geod.
- Read [`references/troubleshooting.md`](references/troubleshooting.md) for
  cross-cutting installation, native-runtime, data, optional-dependency, and
  API failure triage.
- Run [`scripts/pyproj_smoke.py`](scripts/pyproj_smoke.py) for a deterministic,
  no-network CPU smoke check after installing the package.
- Read [`references/repo-provenance.md`](references/repo-provenance.md) before
  deciding whether this graph matches a changed source repository or needs a
  refresh. The structured router metadata is in
  [`references/repo-routing-metadata.json`](references/repo-routing-metadata.json).

## Out of scope

This graph does not teach PROJ/pyproj release engineering, CI matrix
maintenance, wheel publication, broad GIS application frameworks, raster/vector
file I/O, or unbounded network data acquisition. Route those tasks to a more
appropriate skill or ask for a narrower pyproj API surface.

Files in this skill

  • SKILL.md5.1 KB
  • references/api-overview.md2.8 KB
  • references/repo-provenance.md1.3 KB
  • references/repo-routing-metadata.json313 B
  • references/troubleshooting.md4.8 KB
  • scripts/pyproj_smoke.py1.8 KB
  • sub-skills/cli-data-and-network/SKILL.md4.7 KB
  • sub-skills/cli-data-and-network/references/cli-reference.md4.3 KB
  • sub-skills/cli-data-and-network/references/grid-sync.md5.2 KB
  • sub-skills/cli-data-and-network/references/installation-and-runtime.md5.4 KB
  • sub-skills/cli-data-and-network/references/troubleshooting.md5.1 KB
  • sub-skills/cli-data-and-network/scripts/diagnose_pyproj.py4.2 KB
  • sub-skills/coordinate-transformations/SKILL.md5.2 KB
  • sub-skills/coordinate-transformations/references/api-reference.md10.7 KB
  • sub-skills/coordinate-transformations/references/axis-order-and-grids.md10.1 KB
  • sub-skills/coordinate-transformations/references/troubleshooting.md14.8 KB
  • sub-skills/coordinate-transformations/references/workflows.md12.9 KB
  • sub-skills/crs-and-database/SKILL.md5.4 KB
  • sub-skills/crs-and-database/references/api-reference.md10.8 KB
  • sub-skills/crs-and-database/references/crs-formats-and-axis.md6.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.