geodesy op• Data kinds: none → points (an op determined by its arguments alone — it takes no image or data input)
• Call: import fullseye as fs; fs.ledger.dem_datum_shift_3param(lat_deg, lon_deg, h_m, dx_m, dy_m, dz_m, a_from_m, f_from, a_to_m, f_to) (to call the implementation directly, import demops; demops.dem_datum_shift_3param(lat_deg, lon_deg, h_m, dx_m, dy_m, dz_m, a_from_m, f_from, a_to_m, f_to); from the registry, opsdem.get("dem_datum_shift_3param"))
Switching the geodetic datum — a geocentric 3-parameter translation (points).
Even the same "35 degrees 41 minutes north" points to locations several hundred metres apart on the ground in the old Japanese geodetic system and the world geodetic system. This op performs that switch as a translation in geocentric Cartesian coordinates (the Molodensky-Badekas case without rotation or scale)::
ECEF(a_from, f_from) + (dx, dy, dz) -> geodetic(a_to, f_to)
★No default values for the parameters. Which datum to which datum, by which translation, differs by country, region and version; assuming silently yields "coordinates that raise no exception but are several hundred metres off" —— that is this op's reason to exist, so the caller must always write them out.
Args:
lat_deg / lon_deg: latitude/longitude in the source datum [deg]. Arrays allowed.
h_m: ellipsoidal height in the source datum [m].
dx_m / dy_m / dz_m: geocentric translation [m] (source → target).
a_from_m / f_from: semi-major axis [m] and flattening of the source ellipsoid.
a_to_m / f_to: semi-major axis [m] and flattening of the target ellipsoid.
Returns:
(n, 3) of (latitude[deg], longitude[deg], ellipsoidal height[m]).
Checkable by closed form: with translation 0 and the same ellipsoid, the identity transform (the round-trip floor is the same as for dem_ecef_to_geodetic). When only a translation is given, the displacement on the ground matches its components decomposed in the ECEF basis at that point.
ValueError: non-finite values, latitude outside ±90, non-positive semi-major axis, flattening outside [0, 1).
• dem_terrain_analysis family guide
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• poc_geodetic_benchmarks_real — py -3.11 examples/poc_geodetic_benchmarks_real.py
• poc_geodetic_height_frames — py -3.11 examples/poc_geodetic_height_frames.py
points as input)dem_ecef_to_geodetic · dem_geodetic_from_enu
geodesy)dem_geodetic_to_ecef · dem_ecef_to_geodetic · dem_geocentric_grid · dem_earth_curvature_drop · dem_cell_size_webmercator · dem_geodetic_slope · dem_geoid_height · dem_height_frame_convert
*Provenance: demops.py — DEM operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.