tb_dem_ecef_to_geodetic — 2D typed op

• Datenarten: points → points

• Aufruf: fullseye.apply(img, "tb_dem_ecef_to_geodetic", a=0.5, b=0.5) (das 2-D-Modell ist ein Bild plus zwei skalare Regler a,b∈[0,1])

*Keine Abbildung: der Typ ist erreichbar, aber die generische synthetische Eingabe liegt außerhalb des Definitionsbereichs dieses Ops — ECEF は地球表面座標(中心から ~6.4M m)を要るが、画像由来の合成点は原点付近で楕円体の evolute 内に落ち必ず拒否される. Zur Verwendung siehe die lauffähigen Beispiele unten.*

Verwendung

ECEF → geodätische Koordinaten. Rückgabe ist (..., 3) als (Breite[Grad], Länge[Grad], Höhe[m]).

Ein Verfahren nahe an der geschlossenen Form von Bowring (1976). Der Fehler der Hin- und Rückrechnung (geodätisch → ECEF → geodätisch) schwankt je nach Stichprobenort um mehr als 1 Größenordnung, daher wird er mit Bereichen angegeben (neu gemessen 2026-09-08. Früher stand hier "Breite/Länge unter 1e-12 Grad, Höhe unter 1e-7 m", aber ★das war bei 4000 Punkten mit Breite ±85 Grad und Höhe -500 bis 9000 m bereits mit maximal 6.4e-12 Grad / 8.5e-07 m überschritten —— es war mit dem Median 2.6e-13 Grad / 3.3e-08 m verwechselt worden):

• Breite ±85 Grad, Höhe -500 bis 9000 m … Breite Median 2.6e-13 / Maximum 6.4e-12 Grad, Höhe Median 3.3e-08 / Maximum 8.5e-07 m

• Breite ±89.9 Grad, Höhe -11 km bis 40 km … Breite Median 2.9e-12 / Maximum 1.3e-10 Grad, Höhe Median 3.5e-07 / Maximum 1.7e-05 m (zu den Polen hin 20-mal schlechter)

Die Länge ist in beiden Fällen höchstens 2.8e-14 Grad. Alles liegt am Boden unter einem µm und darf praktisch als "Fehlerboden" behandelt werden, aber den Median nicht als Maximum zitieren.

Wenn man nur geozentrische Kugelkoordinaten will, genügen r = |xyz| und geocentric_lat = asin(z/r) —— das ist aber nicht die geodätische Breite (beide weichen um bis zu 0.19 Grad ab, als Entfernung etwa 21 km). Diese Op gibt die geodätische Breite zurück, dieselbe wie Karten und GPS.

★In der Nähe des Erdmittelpunkts wird fail-closed abgewiesen (2026-09-08, von poc_geodetic_height_frames getroffen). Innerhalb der Evolute des Ellipsoids (a·p)^(2/3) + (b·|z|)^(2/3) < (a²-b²)^(2/3) ist die von der Ellipsoidfläche errichtete Normale nicht auf 1 einzige festgelegt, und die geodätische Breite ist von vornherein nicht eindeutig. Bis dahin wurde hier stillschweigend lat = 180° zurückgegeben —— ein Wert, den es als Breite nicht gibt, und zudem einer, den die eigene Umkehrfunktion dem_geodetic_to_ecef mit "lat_deg must be within [-90, 90]" abweist. Der Bereich reicht in der Äquatorebene e²a = 42697.7 m von der Achse und auf der Polachse (a²-b²)/b = 42841.3 m weit (gemessen: 180 Grad bei 42600 m, 0 Grad bei 42700 m —— genau übereinstimmend mit der Grenze der geschlossenen Form).

Die dem-Op dem_ecef_to_geodetic, in die 2-D-Evolutionsregistry überbrückt. Die Implementierung ist dieselbe; nur die Aufrufkonvention ist an op(v, a, b) angepasst. Diese Op hat keine Stellknöpfe; weder a noch b wird verwendet.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

Die folgenden Beispiele rufen den zugrunde liegenden Ledger-Op dem_ecef_to_geodetic auf. Dieser Brücken-Op ist dieselbe Implementierung, angepasst an die Konvention fn(v, a, b); das Verhalten gilt unverändert (nur die Aufrufform unterscheidet sich).

• dem_geodesy_tour — py -3.11 examples/dem_geodesy_tour.py

• 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

Typkompatible Folge-Operatoren (nehmen points als Eingabe)

identity · tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal

Gleiche Kategorie (typed)

tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample


*Provenance: ops.py — 2D Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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