Kürzester Abstand zu 2 Punkten auf der Erdoberfläche (Geodäsie/Vermessung)

Adrian @, Dresden, Wednesday, 04.01.2012, 14:46 (vor 4667 Tagen)

Guten Tag,

Mein Name ist Adrian Hupka, bin neu hier und habe trotzdem eine recht große Frage.

Ich bin Student im 7. FS und arbeite zur Zeit an einer Art Beleg. Die Aufgabe ist es, ein Programm zum geometrischen Map Matching zu schreiben. Geometrisches MapMatching ist recht simpel, da jeder Messpunkt seinem nächstliegenden Segment zugeordnet wird. Es wird keinerlei zusätzliche Information über vorige Messpunkte oder Bewegungsrichtung mit in den Abgleich einbezogen. Im Kontext geht es darum, dass ein Zug seine Position über GPS bestimmt und der Punkt auf eine Bahnstrecke im Kartenmaterial abgeglichen wird. Dieser simple Map-Matching-Algorithmus soll zukünftig als eine Art "Rückfallebene" in der Navigationssoftware des "PiLoNav"-Projekts arbeiten.

Nun sind Knoten bei Streckenverläufen ziemlich dicht und der Messfehler bei der GPS-Positionsbestimmung nicht weltbewegend groß, weshalb man vielleicht für Berechnungen vernachlässigen könnte, dass die Erde eine gekrümmte Oberfläche besitzt. Messpunkt und zwei benachbarte Streckenpunkt bilden dann ein Dreieck und man könnte einfach ein Lot fällen und hätte den Punkt auf das Streckensegment abgebildet (ohne Höhe).

Die Anforderung ist aber größtmöglichste Genauigkeit, weshalb ein solcher Ansatz wie im vorangegangenen Paragraphen nicht möglich ist. Außerdem soll der Kartenabgleich ebenso für die Höhe erfolgen, also im Raum.

Im Laufe der Bearbeitung dieses Themas habe ich mich der Problematik angenommen und eine Lösung gefunden. Bei der Validierung meiner Ergebnisse bin ich nun aber leider überraschend auf Unstimmigkeiten gestoßen, bei denen ich nicht weiß, wie ich damit umgehen soll, bzw. wie/ob es möglich wäre, diese Unstimmigkeiten zu beseitigen.


Schritt 1: Umrechnen/Transformieren der GPS-Koordinaten in karthesische (Link)
Schritt 2: Berechnen des Lotfußpunktes auf das Streckensegment (2-Punkte-Geradengleichung, Orthogonalität von \overline{Messpunkt Lotfu"spunkt} und \overline{Streckenpunkt_{1} Streckenpunkt_2},... -> Link)
Schritt 3: Rücktransformation des Lotfußpunkts in GPS-Koordinaten (Link)

Die Ergebnisse dieses Vorgehens entsprechen weitgehend dem, was gefordert ist. Die Lotfußpunkt-Koordinaten geograf. Länge und Breite liegen genau auf dem Streckenstück und die Gerade durch Lotfußpunkt und diesen Punkt ist auch Orthogonal zum Streckenstück.

Die Unstimmigkeit die nun aber auftritt, ist die ellipsoidische Höhe. Ich erwartete, dass beispielsweise bei einer Streckenpunkte-Entfernung von 1m und einem Höhenunterschied zwischen beiden Streckenpunkten von 10cm der Lotfußpunkt, wenn er genau zwischen beide Streckenpunkte abgebildet wird, die Höhe genau zwischen beiden Streckenpunkten liegt, nämlich bei 5cm Differenz zu jedem der Streckenpunkte. Tatsächlich ist die Höhe IMMER kleiner als erwartet. Wenn der Lotfußpunkt direkt auf einem der Streckenpunkte liegt, ist die Höhe natürlich gleich der Höhe des Streckenpunktes.

Der vorangegangen Abschnitt liest sich bestimmt etwas wirr. Hier einmal zwei Bilder von meiner Programmoberfläche, wo mir die Unstimmigkeiten erst aufgefallen sind:

[image]
[image]

Der schwarze, bzw. grüne Punkt ist der Messpunkt. Der Kreis skaliert visualisiert die Höhe in der 2dim-Darstellung.

Im zweiten Bild ist recht deutlich zu sehen, dass Länge und Breite zwar zu stimmen scheinen, die Höhe aber ~150m von meinen Erwartungen abweicht.


Nun meine Frage. Woher kommt das, was kann ich tun? :-D Ich habe natürlich auch überlegt, woher das kommen könnte...

Ich vermute, dass es an dem Schritt der Transformationen hin und zurück liegt, und sich dort Verzerrungen ergeben. Vermeiden ließe sich das, indem man nicht transformiert, sondern mit Polar-Kooridnaten abgleicht. Da aber die Höhen unterschiedlich sind, sind auch die rotationssymetrischen Ellipsoiden verschieden, weshalb man da nicht ohne weiteres Abstände oder "Lote" bilden kann.


Ich hoffe mir kann jemand eine Anregung geben, das Problem zu lösen oder wenigstens zu verstehen.

Mit freundlichen Grüßen


Adrian


gesamter Thread:

 RSS-Feed dieser Diskussion