====== 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.