vibeproj.helmert¶
Helmert 7-parameter datum transformation.
Transforms geodetic coordinates between two ellipsoids via geocentric (ECEF) intermediate using the Position Vector convention (EPSG method 9606).
Pipeline: geodetic(src) -> ECEF -> Helmert rotate/translate/scale -> ECEF -> geodetic(dst)
Attributes¶
Classes¶
Helmert 7-parameter datum transformation (Position Vector convention). |
Functions¶
|
Convert geodetic (lat, lon in radians) to ECEF (X, Y, Z) in meters. |
|
Convert ECEF (X, Y, Z) to geodetic (lat, lon in radians). |
|
Apply Helmert 7-parameter datum shift. |
Module Contents¶
- vibeproj.helmert.DEG_TO_RAD = 0.017453292519943295¶
- vibeproj.helmert.RAD_TO_DEG = 57.29577951308232¶
- class vibeproj.helmert.HelmertParams¶
Helmert 7-parameter datum transformation (Position Vector convention).
Parameters are always stored in Position Vector convention. Coordinate Frame convention rotations are negated at extraction time.
- tx: float¶
- ty: float¶
- tz: float¶
- rx: float¶
- ry: float¶
- rz: float¶
- ds: float¶
- src_ellipsoid: vibeproj.ellipsoid.Ellipsoid¶
- dst_ellipsoid: vibeproj.ellipsoid.Ellipsoid¶
- dtx: float = 0.0¶
- dty: float = 0.0¶
- dtz: float = 0.0¶
- drx: float = 0.0¶
- dry: float = 0.0¶
- drz: float = 0.0¶
- dds: float = 0.0¶
- t_epoch: float = 0.0¶
- property has_rates: bool¶
True if time-dependent rate parameters are present.
- at_epoch(epoch: float) HelmertParams¶
Compute effective 7-parameter transformation at a given epoch.
- Folds the rate terms into the base parameters:
param_eff = param + rate * (epoch - t_epoch)
Returns a standard (non-time-dependent) HelmertParams with rates zeroed.
- inverted() HelmertParams¶
Return the inverse transformation (swap src/dst, negate params).
- vibeproj.helmert.geodetic_to_ecef(lat_rad, lon_rad, a, es, xp, h=None)¶
Convert geodetic (lat, lon in radians) to ECEF (X, Y, Z) in meters.
Parameters¶
- lat_rad, lon_radarray_like
Geodetic coordinates in radians.
- afloat
Semi-major axis.
- esfloat
First eccentricity squared.
- xpmodule
Array module (numpy or cupy).
- harray_like, optional
Ellipsoidal height in meters. When None, height=0 (exact current behavior).
Returns¶
- X, Y, Zarrays
ECEF coordinates in meters.
- vibeproj.helmert.ecef_to_geodetic(X, Y, Z, a, es, xp, return_height=False)¶
Convert ECEF (X, Y, Z) to geodetic (lat, lon in radians).
Uses iterative Bowring method (converges in ~3 iterations for sub-mm).
Parameters¶
- X, Y, Zarray_like
ECEF coordinates in meters.
- afloat
Semi-major axis.
- esfloat
First eccentricity squared.
- xpmodule
Array module (numpy or cupy).
- return_heightbool, optional
When True, recover and return ellipsoidal height. Default False.
Returns¶
- lat_rad, lon_rad, htuple
Geodetic coordinates in radians and ellipsoidal height in meters.
hisNonewhen return_height is False.
- vibeproj.helmert.apply_helmert(lat_deg, lon_deg, params: HelmertParams, xp, h=None)¶
Apply Helmert 7-parameter datum shift.
Parameters¶
- lat_deg, lon_degarray_like
Geodetic coordinates in degrees on the source ellipsoid.
- paramsHelmertParams
Transformation parameters (Position Vector convention).
- xpmodule
Array module (numpy or cupy).
- harray_like, optional
Ellipsoidal height in meters. When provided, height is transformed through the ECEF intermediate and recovered on the destination ellipsoid.
Returns¶
- lat_deg_out, lon_deg_outarrays
Geodetic coordinates in degrees on the destination ellipsoid.
- h_outarrays (only when h is not None)
Transformed ellipsoidal height in meters.