"Transform coordinates between pyproj CRS and projections with
Scanned 9/9/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill coordinate-transformations --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Coordinate Transformations?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-coordinate-transformations)More formats (shields.io, HTML) on the badges page.
---
name: coordinate-transformations
description: "Transform coordinates between pyproj CRS and projections with
explicit axis-order, operation-selection, array, time, bounds, pipeline, and
grid-availability checks."
disable-model-invocation: true
metadata:
disco-role: operating
license: NOASSERTION
---
# Coordinate transformations
Use this route when the job executes a coordinate operation: CRS-to-CRS
conversion, a PROJ pipeline, a projection-only conversion, transformed bounds,
or selection/diagnosis of alternative operations. Begin with
[`references/workflows.md`](references/workflows.md), then consult the focused
references before choosing an operation.
## Route and boundaries
- Use `Transformer.from_crs` for a CRS-to-CRS operation, including datum or
coordinate-frame changes. Inspect the selected operation before trusting
results.
- Use `Transformer.from_pipeline` when the operation is an explicit PROJ
pipeline or an identified coordinate-operation object. Use
`TransformerGroup` when alternatives, area-of-interest ranking, accuracy
constraints, or missing grids must be compared.
- Use `Proj` only for a projection operation within the projection's own datum
or for a deliberately specified PROJ projection. It is not a generic datum
transformation tool.
- CRS construction, axis metadata, authority lookup, and database queries go
to [`../crs-and-database/SKILL.md`](../crs-and-database/SKILL.md).
- Network policy, PROJ data directories, grid discovery, and explicit grid
synchronization go to
[`../cli-data-and-network/SKILL.md`](../cli-data-and-network/SKILL.md).
- Distance, area, azimuth, and ellipsoidal calculations go to
[`../geodesic-calculations/SKILL.md`](../geodesic-calculations/SKILL.md).
## Minimum operating sequence
1. Write down source and target CRS, coordinate order, units, dimensionality
(2D/3D/4D), geographic area, and whether the input is degrees or radians.
2. Validate the CRS definitions and their axis metadata through the CRS route.
If application data is conventionally `(longitude, latitude)`, create the
transformer with `always_xy=True` and document that contract.
3. Create one reusable `Transformer`; do not use the deprecated module-level
`transform` or `itransform` for new code. Apply `Transformer.transform` or
`itransform` to scalar, array, or point-stream inputs.
4. For a datum-sensitive or regional conversion, select with an
`AreaOfInterest` and appropriate `authority`, `accuracy`, and
`allow_ballpark` constraints. Use `only_best=True` only when an unavailable
best operation must be a hard error.
5. When operation availability is uncertain, inspect a `TransformerGroup`:
compare `transformers`, `unavailable_operations`, `best_available`,
operation descriptions, accuracies, and grid metadata. Do not infer that a
missing grid is downloadable or that network access is permitted.
6. Validate the output shape, units, plausible range/area of use, and a
reverse transformation when the operation has an inverse. Use
`errcheck=True` at validation boundaries so invalid points fail explicitly;
retain the default `inf` behavior only when the caller has a defined policy
for invalid points.
## Core contracts
- **Inputs:** CRS-compatible user inputs or an explicit pipeline; coordinate
scalars, equal-shaped arrays, point iterables, optional `z` and `t`; optional
area and operation-selection constraints.
- **Outputs:** transformed `x, y` and optional `z, t` with the input container
family preserved where supported; an iterator for `itransform`; a four-value
tuple for `transform_bounds`; operation metadata and group availability
state for diagnostics.
- **Expected signals:** a transformer has a useful `description`, `definition`,
`accuracy`, `area_of_use`, and (where supported) `operations`; a group makes
best and unavailable alternatives visible. A successful numeric result is
not by itself proof that the desired operation or axis convention was used.
- **Recovery:** first correct CRS/axis/unit assumptions, then inspect operation
metadata and area of use, then classify missing-grid and data/network issues.
Escalate data-directory and network changes to the CLI/data route rather than
silently enabling remote access.
## Focused references
- [`references/api-reference.md`](references/api-reference.md): signatures,
parameters, return shapes, metadata, and API selection.
- [`references/workflows.md`](references/workflows.md): repeatable workflows
for CRS conversion, pipelines, arrays/time, bounds, and operation choice.
- [`references/axis-order-and-grids.md`](references/axis-order-and-grids.md):
axis traps, area and accuracy filters, `TransformerGroup`, and grid policy.
- [`references/troubleshooting.md`](references/troubleshooting.md): symptoms,
checks, and recovery for invalid results, arrays, pipelines, axes, and grids.
## Publication checks
Before handing this route to a caller, confirm that every transformation has
an explicit coordinate order and unit contract, that any grid-dependent result
records availability and fallback behavior, and that validation covers output
shape plus at least one plausibility or round-trip check. Keep download and
network side effects outside this route unless the caller has separately
approved the CLI/data workflow.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!