geodesy opなし → points(引数だけで決まる op —— 画像やデータの入力を取らない)import fullseye as fs; fs.ledger.dem_enu_from_geodetic(lat_deg, lon_deg, h_m, lat0_deg, lon0_deg, h0_m) (実装を直接呼ぶなら import demops; demops.dem_enu_from_geodetic(lat_deg, lon_deg, h_m, lat0_deg, lon0_deg, h0_m)、台帳から引くなら opsdem.get("dem_enu_from_geodetic"))測地座標 → 基準点まわりの局所 ENU(東・北・上)[m] (points)。
現場の図面・ロボットの地図・点群の多くは「原点からの東・北・上」で書かれる。
ECEF からの変換は基準点での回転 1 つで、ENU = R(lat0, lon0) (X - X0)。
★ 平面直角座標(投影)ではない。ENU は基準点で接する平面への正射影に 相当し、距離が伸びるほど地球の丸みぶん高さ方向に落ちる —— 10 km で約 7.8 m、 100 km で約 780 m。広域を「平らな xy」として扱うのは、この落差を捨てること。
Args:
lat_deg / lon_deg: 点の緯度・経度 [度]。配列可。
h_m: 点の楕円体高 [m]。
lat0_deg / lon0_deg / h0_m: 基準点(原点)の測地座標。
Returns:
(n, 3) の (east, north, up) [m]。基準点そのものは厳密に (0, 0, 0)。
閉じた式で検査できること: 基準点で (0, 0, 0)、
:func:dem_geodetic_from_enu との往復が 1e-9 m 級、そして既存の
:func:dem_geodetic_to_ecef を経由して自分で回した結果と一致する
(別経路での検算)。
ValueError: 非有限、緯度が ±90 を外れる、長さの食い違い。
py -3.11 examples/poc_geodetic_benchmarks_real.pypy -3.11 examples/poc_geodetic_height_frames.pypoints を入力に取れる)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. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.