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 を外れる、長さの食い違い。
• dem_terrain_analysis ファミリ ガイド
• サンプルデータ カタログ(DL URL / ライセンス) — 2-D は skimage.data(BSD/public)+ 合成、3-D は実データ源(Stanford/PDS 等)の DL URL。
• 演算子の来歴・参考文献 — この 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
points を入力に取れる)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.