dem_geoid_height — DEM geodesy op

• Data kinds: depth → signal

• Call: import fullseye as fs; fs.ledger.dem_geoid_height(geoid, lat_deg, lon_deg, lat0_deg, lon0_deg, d_lat_deg, d_lon_deg) (to call the implementation directly, import demops; demops.dem_geoid_height(geoid, lat_deg, lon_deg, lat0_deg, lon0_deg, d_lat_deg, d_lon_deg); from the registry, opsdem.get("dem_geoid_height"))

Usage

Bilinearly interpolates a geoid-height grid at a latitude/longitude and returns N [m] (signal).

GNSS returns the ellipsoidal height h; maps and design drawings use the orthometric height H. The difference is the geoid height N (H = h - N), which near Japan is roughly +30 to +40 m. This op is a tool for reading published geoid model grids (equally spaced grids like the GSIGEO / EGM family), and does not hold the model itself —— which version was used is the caller's responsibility, and when the version changes the heights move by a few cm.

Args:

geoid: (H, W) geoid height [m]. geoid[0, 0] is

(lat0_deg, lon0_deg); as the row increases the latitude increases by d_lat_deg,

as the column increases the longitude increases by d_lon_deg (either sign is fine).

lat_deg / lon_deg: latitude/longitude of the points to look up [degrees]. Arrays allowed.

lat0_deg / lon0_deg: grid origin [degrees].

d_lat_deg / d_lon_deg: grid step [degrees]. 0 is rejected.

Returns:

(n,) geoid heights [m].

What can be checked with a closed formula: for a grid where N is a linear function of latitude and longitude, bilinear interpolation is exact (machine precision). With quadratic terms, the error is bounded above by |∂²N| * d² / 8.

ValueError: grid not 2-D / smaller than 2x2 / non-finite, step 0 or non-finite, latitude outside ±90, and points outside the grid (sea areas or out-of-range are not silently filled with edge values —— an extrapolated geoid height is not a survey value).

Detailed usage guide

• dem_terrain_analysis family guide

References (sample data, literature)

• 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.

Runnable examples (verified samples that actually call this op)

• 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

Ops the type connects to (they accept signal as input)

dem_height_frame_convert · dem_height_frame_residual

Same category (geodesy)

dem_geodetic_to_ecef · dem_ecef_to_geodetic · dem_geocentric_grid · dem_earth_curvature_drop · dem_cell_size_webmercator · dem_geodetic_slope · dem_height_frame_convert · dem_height_frame_residual


*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.