vibeproj.projections.transverse_mercator

Transverse Mercator projection — ported from cuProj / PROJ.

Implements the Poder/Engsager exact Transverse Mercator using 6th-order series expansion. This is the projection used by UTM and many national grids.

Original C++ code: Copyright (c) 2023 NVIDIA CORPORATION (Apache 2.0) Based on PROJ tmerc.cpp by Knud Poder and Karsten Engsager (MIT).

Attributes

Classes

TransverseMercator

Base class for all map projections.

Module Contents

vibeproj.projections.transverse_mercator.ETMERC_ORDER = 6
class vibeproj.projections.transverse_mercator.TransverseMercator

Bases: vibeproj.projections.base.Projection

Base class for all map projections.

Subclasses implement forward/inverse transforms that operate on arrays of coordinates. The xp parameter is the array module (numpy or cupy).

Projection math operates in radians on the ellipsoid. The pipeline handles degree/radian conversion, axis swapping, and false easting/northing.

name = 'tmerc'
setup(params: vibeproj.crs.ProjectionParams) dict

Compute 6th-order series coefficients from ellipsoid parameters.

forward(lam, phi, params, computed, xp)

Geographic -> Transverse Mercator.

lam: longitude relative to central meridian (radians) phi: latitude (radians)

inverse(x, y, params, computed, xp)

Transverse Mercator -> Geographic.

x, y: projection-native coordinates (before offset/scale removal — the pipeline handles that) Actually: x, y are already scaled/offset-removed by the pipeline.