Bewegung mit GPS-Koordinaten



  • Hallo zusammen,

    ich habe seit einigen Tagen ein Problem, für das ich keine Lösung finde: Ich habe eine GPS-Koordinate (in Dezimalschreibform, Lat/Lon) und möchte nun anhand einer Distanz und Richtung diesen Punkt verschieben. Mit gewöhnlicher Trigonometrie ist das ja nicht getan, da sich die Erdkrümmung in jedem Breitengrad anders auf die Koordinaten auswirkt.

    Gedacht ist das für ein Flugobjekt, dass sich von seiner aktuellen Position mit einem Kurs und einer Geschwindigkeit bewegt. (falls es wichtig ist oder es jemanden interessiert: Kurs in Grad mit Ursprung Norden und im Uhrzeigersinn, Geschwindigkeit in Knoten [kt], wobei 1 kt = 1 nm/h)

    Gruß,
    Stefan.


  • Mod

    Schon einmal daran gedacht, mit Kugelkoordinaten zu rechnen? Böte sich irgendwie an...



  • Auf jeden Fall daran gedacht. 🙂 Ich habe Google schon mit vielen Stichworten zugeschmissen und bin dabei auch darüber gestolpert. Leider bin ich mathematisch nicht fit genug, um das auf mein Problem zu übertragen. Ich dachte daran, dass es vielleicht eine Variante gibt, die direkt mit den Quellkoordinaten funktioniert.

    Natürlich ist mir bewusst, dass es kein Zweizeiler wie z.B. im kartesischen Koordinatensystem ist.

    Ansonsten bin ich auf jeden Fall an die Nutzung von GPS-Koordinaten gebunden, da ich etliche Referenzpunkte als solche vorliegen habe. Ließe sich vielleicht umwandeln, falls ihr meint, dass das mehr Sinn macht. Bin da persönlich überfragt.



  • http://www.koordinaten.de/informationen/formel.shtml

    Hier wird zwar aus 2 Punkten die Entfernung bestimmt, sollte jedoch auch umgekehrt mit einem Punkt und der Entfernung gehen, wenn man die Formeln nach der neuen Unbekannten umstellt.

    So bekommst du zumindest schonmal einen Zielkreis mit r = Entfernung.
    Durch die Richtung bekommst du einen Schnittpunkt mit dem Kreis, der dann dein Zielpunkt ist.
    Wichtig ist auch noch die Flughöhe, die muss dann noch zum Erdradius addiert werden.

    So würde ich mir das rein theoretisch vorstellen.



  • Bei dieser Berechnung sollte man noch ein paar Annahmen machen, die einen das Leben erleichtern. Wenn man eine Kompassrichtung annimmt, mit der man sich bewegt, so sollte diese nur für den Startpunkt gelten. Gilt sie immer, so bewegt man sich auf einer Spirale. Man stelle sich vor, man steht 10m vorm Nordpol und bewegt sich nach NO also 45Grad. Hält man die 45Grad, so bewegt man sich auf einer Spirale, hält man die Richtung (auf einem Großkreis um die Erde) so liegt der Nordpol nach 8m links von der Position, also fährt man nach Osten und nach weiteren paar Metern nach Südosten.

    Da sich das mit den Großkreisen leichter bestimmen lässt, als das mit den Spiralen, nehme ich für die folgende Betrachtung mal ersteres an.

    Ich führe ein Koordinatensystem ein, dessen Mittelpunkt im Erdmittelpunkt liegt, die Z-Achse zeigt durch den Nordpol, die X-Achse geht durch den Schnittpunkt des Nullmeridians mit dem Äquator und Y liegt demnach bei 90Grad östlicher Länge auf dem Äquator.

    Der Breitenwinkel ist β\beta und der Längenwinkel λ\lambda, dann ist der Vektor, der von Erdmittelpunkt auf die Position zeigt... - Latex geht wieder nicht 😡 😞

    also die Position p 😞 cos(beta)*cos(lambda), cos(beta)*sin(lambda), sin(beta) ) = (p_x, P_y, p_z)

    die Nordrichtung n in p erhält man dann, indem man p um 90Grad in Richtung Z-Achse klappt
    n = (-p_z * p_x / wurzel(p_x*p_x+p_y*p_y), -pz * p_y / wurzel(p_x*p_x+p_y*p_y), wurzel(p_x*p_x+p_y*p_y))

    jetzt kommt man zur lokalen Ostrichtung o in p durch o = n x p

    Ist eine Kompassrichtung alpha vorgegeben, so lässt sich die lokale Richtung d mit d = cos(alpha)*n + sin(alpha)*o bestimmen.

    Der Großkreis auf dem man sich bewegt liegt auf einer Ebene, in der auch die Vektoren p und d liegen. Um die Zielposition zu bestimmen, muss man noch die Distanz e in einem Winkel delta umrechnen, Das geht über den Erdradius
    delta = e / R

    Die Zielposition ergibt sich dann aus
    p_ziel = p * cos(delta) + d * sin(delta)

    Diese muss natürlich wieder in Breite beta_Ziel und Länge lambda_Ziel umgerechnet werden. Dazu schaut man sich die erste Formel von p an und findet
    lambda_Ziel = atan2( p_y, p_x )
    und
    beta_Ziel = atan2( p_z, p_x / cos(lambda_Ziel) )
    liegt cos(lambda_Ziel) bei 0 so wählt man
    beta_Ziel = atan2( p_z, p_y / sin(lambda_Ziel) )

    auch auf die Gefahr hin, dass hier noch ein paar Tippfehler drin sind, sollte das so zum Ziel führen, solange der Startpunkt weder am Nord- noch am Südpol liegt.

    Gruß
    Werner



  • Grandios, so ausführlich hätte ich's gar nicht erwartet. Vielen Dank, das hilft mir definitiv weiter!

    @Whtthfck?: Der Link ist definitiv auch interessant, danke dafür.


Anmelden zum Antworten