====== std.geodesy — Erdellipsoid und Bezugsrahmen ======
→ [[lyx_-_programmiersprache:units|Zurück zur Unit-Übersicht]] · [[lyx_-_programmiersprache:units:geo:sphere|std.geo.sphere]] · [[lyx_-_programmiersprache:units:coordinates|std.coordinates]] · [[lyx_-_programmiersprache:guides:navigation|Guide: Navigation und Wegpunkte]]
Zwei Units für Geodäsie auf dem **Ellipsoid** statt auf der Kugel: Referenzellipsoide mit ihren Krümmungsradien, und die Umrechnung zwischen geodätischen Koordinaten, ECEF und den örtlichen Rahmen ENU und NED.
**Quelle:** ''std/geodesy/''
**Der Unterschied zur Kugel ist keine Feinheit.** Die Kugelnäherung in [[lyx_-_programmiersprache:units:geo:sphere|std.geo.sphere]] weicht in der Entfernung um bis zu **0,5 %** ab — auf 1000 km sind das 5 km. Für eine Kartendarstellung belanglos, für Vermessung, Navigation oder eine Landebahnrechnung nicht.
----
===== Units im Überblick =====
^ Unit ^ Import ^ Inhalt ^
| [[lyx_-_programmiersprache:units:geodesy:ellipsoid|std.geodesy.ellipsoid]] | ''import std.geodesy.ellipsoid;'' | ''Ellipsoid''-Typ, fertige Referenzellipsoide (WGS84, GRS80, Bessel 1841, Clarke 1866), Exzentrizität, Quer- und Meridiankrümmungsradius, Meter je Breiten- und Längengrad |
| [[lyx_-_programmiersprache:units:geodesy:frames|std.geodesy.frames]] | ''import std.geodesy.frames;'' | ''Geodetic''-Typ, geodätisch ↔ **ECEF**, ECEF ↔ **ENU** und **NED**, Azimut, Elevation, Schrägentfernung |
----
===== Die vier Bezugsrahmen =====
^ Rahmen ^ Ursprung ^ Achsen ^ Wofür ^
| **geodätisch** | — | Breite, Länge, Höhe über dem Ellipsoid | Eingabe und Ausgabe, Karten |
| **ECEF** | Erdmittelpunkt | erdfest, kartesisch (x, y, z) | Rechnen, GNSS, Umrechnungsdrehscheibe |
| **ENU** | ein Standpunkt | Ost, Nord, Oben | Sichtlinien, Antennen, Vermessung |
| **NED** | ein Standpunkt | Nord, Ost, **Unten** | Luftfahrt, Regelungstechnik |
**ECEF ist die Drehscheibe**: geodätisch → ECEF → ENU/NED. ''EnuToNed'' und ''NedToEnu'' tauschen direkt um — sie vertauschen die ersten beiden Achsen und **kehren das Vorzeichen der dritten um**. Genau das ist der Fehler, der sonst unbemerkt bleibt: ein Vorzeichen in der Höhe.
----
===== Einstiegsbeispiel =====
unit main;
import std.coordinates.vec3;
import std.coordinates.transform;
import std.geodesy.ellipsoid;
import std.geodesy.frames;
import std.io;
import std.string;
fn main(): int64 {
var e: Ellipsoid := EllWgs84();
var hh: Geodetic := GeodFromDeg(53.6304, 9.9882, 0.0); // Standpunkt
var zz: Geodetic := GeodFromDeg(53.5511, 9.9937, 0.0); // Ziel
var enu: V3 := EcefToEnu(e, hh, GeodToEcef(e, zz));
PrintLn(StrConcat("Nord (m): ", FloatToStr(enu.y, 1)));
PrintLn(StrConcat("Azimut (Grad):", FloatToStr(RadToDeg(EnuAzimuth(enu)), 2)));
PrintLn(StrConcat("Entfernung: ", FloatToStr(EnuSlantRange(enu), 1)));
PrintLn(StrConcat("1 Grad Breite:", FloatToStr(EllLatDegreeM(e, hh.latRad), 1)));
PrintLn(StrConcat("1 Grad Laenge:", FloatToStr(EllLonDegreeM(e, hh.latRad), 1)));
return 0;
}
Nord (m): -8825.9
Azimut (Grad):177.63
Entfernung: 8833.4
1 Grad Breite:111298.1
1 Grad Laenge:66155.3
**Der Längengrad ist auf dieser Breite nur noch 66 km lang**, der Breitengrad 111 km — das ist der Grund, warum eine flache Rechnung mit gleich langen Grad-Schritten in Mitteleuropa um 40 % danebenliegt.
----
===== Wann welche Unit =====
^ Aufgabe ^ Unit ^
| Kurs und Strecke über den Großkreis, weltweit | [[lyx_-_programmiersprache:units:geo:sphere|std.geo.sphere]] — schneller, 0,5 % ungenauer |
| Vermessung, örtliche Netze, Sichtlinien | **std.geodesy** |
| Rechtecke und Umkreissuche im Nahbereich | [[lyx_-_programmiersprache:units:geo|std.geo]] (Mikrograd, ganzzahlig) |
| Flugleistung und Flugführung | [[lyx_-_programmiersprache:units:aero|std.aero]] |
Letzte Aktualisierung: 2026-09-06 — Seite neu angelegt; erhoben aus ''std/geodesy/*.lyx'', Beispiel gegen lyxc 1.2.2D übersetzt und ausgeführt.