fullseye

dem_ecef_to_geodetic — DEM geodesy op

使い方

ECEF → 測地座標。返りは (..., 3)(緯度[度], 経度[度], 高さ[m])

Bowring (1976) の閉形式に近い解法。往復(測地→ECEF→測地)の誤差は どこを標本にしたかで 1 桁以上動くので、範囲つきで書く(2026-09-08 再測。 以前は「緯度・経度 1e-12 度未満、高さ 1e-7 m 未満」と書いていたが、 ★これは緯度 ±85 度・高さ -500〜9000 m の 4000 点で既に 最大 6.4e-12 度 / 8.5e-07 m と超えていた —— 中央値 2.6e-13 度 / 3.3e-08 m と混同していた):

経度はどちらでも最大 2.8e-14 度。いずれも地上では µm 以下で、実用上は 「誤差の床」として扱ってよいが、中央値を最大値として引用しないこと

地心座標が欲しいだけなら、r = |xyz|geocentric_lat = asin(z/r) で足りる —— ただしそれは測地緯度ではない (両者は最大 0.19 度、距離にして約 21 km ずれる)。この op が返すのは 地図や GPS と同じ測地緯度のほう。

地球の中心付近では fail-closed で拒否する(2026-09-08、 poc_geodetic_height_frames が踏んだ)。楕円体の縮閉線(evolute) (a·p)^(2/3) + (b·|z|)^(2/3) < (a²-b²)^(2/3) の内側では、楕円体面から 立てた法線が 1 本に決まらず、測地緯度がそもそも一意でない。それまでは ここで黙って lat = 180 度 を返していた —— 緯度として存在しない値で、 しかも自分の逆関数 :func:dem_geodetic_to_ecef が 「lat_deg must be within [-90, 90]」で拒否する値だった。 領域は赤道面で軸から e²a = 42697.7 m、極軸上で (a²-b²)/b = 42841.3 m まで(実測: 42600 m で 180 度、42700 m で 0 度 —— 閉形式の境界とちょうど一致)。

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(points を入力に取れる)

同カテゴリ(geodesy)

dem_geodetic_to_ecef · dem_geocentric_grid · dem_earth_curvature_drop · dem_cell_size_webmercator · dem_geodetic_slope


Provenance: demops.py — DEM operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.