Entfernungsberechnung zweier Koordinaten

  • Hallo zusammen,


    habe bislang bei meiner Suche nach einer Antwort nichts gefunden, deshalb versuchs ich's hier mal....


    1) Ich habe zwei Koordinaten (in Grad), und möchte wissen, wieviele Meter diese voneinander entfernt sind. Da ja für die Umrechnung der Abstände von Längengraden berücksichtigt werden muss - cos (Breitengrad) - komm ich einfach nicht auf die Lösung.


    2) Ich habe einen Punkt S mit den Koordinaten (sBreite und sLänge) und zwei Längenangaben (oBreite und oLänge), welche die Entfernung eines Punktes Z (zBreite, zLänge) in Metern angeben.
    Nun möchte ich die Koordinaten des Punktes Z bestimmen.


    Bislang habe ich gerechnet:


    #define ErdUmfang 40030
    #define MeterToGrad (360 / ErdUmfang / 1000)


    Korrektur: durch cos(oBreite) teilen, nicht mal nehmen
    zBreite = sBreite + (oBreite * MeterToGrad);
    zLänge = sLänge + (oLänge * MeterToGrad / cos (oBreite));


    Aus gegebenem Anlass kenne ich alle Angaben (also Startposition, Offset und Zielposition). Wenn ich versuche, mit obigen Formel die Zielposition nachzuberechnen, stimmt mein errechneter Breitenwert überein. Aber mein errechneter Längenwert stimmt nicht (ist zu klein).


    Mit cos (Breite) wird die Distanz zwischen zwei Längengraden korrigiert. Da ich nicht weiss, ob der Längenoffset auf dem Breitengrad des Startpunktes oder des Zielpunktes berechnet werden muss, habe ich beides versucht und komme aber nicht auf das richtige Ergebnis (die Längenkoordinate ist immer im konkrten Beispiel um ca. 0.5 Grad zu klein).


    Mach ich etwas prinzipiell falsch?


    Wäre schön, wenn jemand weiterhelfen könnte.


    Wer vermutet, dass es sich um die Dekodierung der POI's von Destinator handelt, liegt richtig....
    Wenn ich dies hier gelöst habe, bin ich durch!



    Gruß


    Andreas

    Einmal editiert, zuletzt von omega ()

  • Hallo,
    so schwer brauchst du dir das gar nicht machen. Schau mal bei google nach Umwandlung von Koordinaten(von Grad nach Gauß Krüger tools) du mußt einfach nur deine beiden Koordinaten nach Gauß Krüger umrechnen lassen! Dann hast du hoch und rechtswerte!
    Nun nimmst du die beiden Hochwerte der Koordinaten und ziehst den Hochwert des Startpunktes von dem des Zielpunktes ab. Das selbe tust du mit dem Rechtswert. Mit diesen beiden Werten kannst du nun mit dem Satz des Pythagoras deine Strecke bestimmen.
    a²+b²=c²
    Also
    Ergebnis Rechtswert zum Quadrat + Ergebnis Hochwert zum Quadrat = ....
    Davon mußt du jetzt nur noch die Wurzel ziehen!
    Und dann hast du dein Strecke
    (Das ist der einfachste Weg)


    Bei deiner Nr2 verstehe ich die Fragestellung nicht, wenn du mir die Frage nochmal etwas genauer erläuterst kann ich dir da bestimmt auch weiterhelfen!
    Oder dir deine Koordinate gerade berechnen!


    Dein Weg (oder Lösungsansatz) geht auch ist aber viel komplizierter! Und sehr schwierig zu erklären

  • Hallo luckywellman,


    danke erstmal für deine schnelle Antwort.


    Teil 1 habe ich schon programmiert und hat sich erledigt. Vielen Dank für den Hinweis auf Gauss-Krüger.


    Zu Teil 2:


    Ich machs Mal konkret:


    Ich habe:
    Ursprungspunkt S mit sBreite = 47.27020 N und sLänge = 4.72221 E
    Distanz (in Metern) mit oBreite = 170773 und oLänge = 310742
    ZielPunkt Z mit zBreite = 48.80600 N und zLänge = 9.27647 E


    Die Aufgabe ist nun herauszufinden, wie man vom Punkt S mit der Distanz auf den Punkt Z kommt.


    Mit meinen beschriebenen Formeln komme ich exakt auf die richtige Breite des Punktes Z, aber nicht auf dessen Länge (der Wert ist wie gesagt zu klein).
    Ich habe versucht, erst den Punkt S in GK umzurechnen, habe dann die Offsets draufaddiert und dann zurückgerechnet: funktioniert natürlich nicht, da die Offsets relativ zu S an dessen Breite angegeben wurden)!
    Wie gesagt, für die Breite tut's (ist ja auch der leichtere Fall). Bei der Länge muss man ja den abnehmenden Abstand der Längenmeridiane (mit cos(Breite)) zu den Polen berücksichtigen.


    Ich bin so nah dran....


    Grüße


    Andreas

  • Hallo Charly,


    hab die Excel-Tabelle angeschaut, vielen Dank.
    Heisst das, dass ich mit der Formel
    M = arc cos (sin B1*sin B2 + cos B1*cos B2 * cos UL )
    und den entsprechenden Werten die Distanz zweier beliebiger Punkte berechnen kann? Gibt es Rahmenbedingungen?


    Dass wäre natürlich wesentlich einfacher, als immer in GK Koordinaten umzurechnen, oder?


    Wäre natürlich immer noch froh, wenn mir noch jemand bei der 2. Frage helfen könnte.


    Gruß


    Andreas

  • Hallo Andreas,


    Entfernungsberechnung kannst Du durch Eingabe in die Tabelle direkt machen.


    Deine 2. Frage - sorry - habe ich auch nach 2maligem Lesen noch nicht verstanden. Versuche mal sie umzuformulieren.

  • Zitat


    Teil 1 habe ich schon programmiert und hat sich erledigt. Vielen Dank für den Hinweis auf Gauss-Krüger.


    Ich möchte dich aber der Vollständigkeit halber darauf hinweisen, das eine Streckenberechnung mit Gauß-Krüger Koordinaten leichte Abweichungen gegenüber den Berechnungen in Grad haben kann, da das Gauß-Krüger Netz die Erde als Refferenzelipsioiden sieht und bei Grad,sek, min, wird die Erde als Kugel angenommen. (hoffentlich erzähle ich jetzt keinen Blödsinn, aber so habe ich das in Erinnerung)




    Ich kann dir das bestimmt rechnen, aber ich muß deine Frage vorher verstehen. Also du hast einen bekannten Startpunkt S und einen bekannten Endpunkt Z nun komme ich bei deiner Frage aber nicht mehr mit! Von welchem Punkt geht welche Distanz aus? und welchen Punkt möchtest du berechnen?Warum möchtest du Z berechnen wenn er schon bekannt ist?
    Am besten du zeichnest mir das ganze mal auf und schreibst deinen Berechnungsversuch daneben und schickst mir das. Dann werde ich das mal nachrechnen und kann dir dann bestimmt sagen wo dein Fehler liegt!
    Bitte schreib auch noch dazu in welchem Netz deine Koordinaten"Grad" sind, da gibt es auch jede Menge! WGS84, Potsdamer Datum, Europäisches Datum 1950 und und und


    Viele Grüße
    Manuel

  • Zitat

    Original von luckywellman


    Am besten du zeichnest mir das ganze mal auf und schreibst deinen Berechnungsversuch daneben und schickst mir das. Dann werde ich das mal nachrechnen und kann dir dann bestimmt sagen wo dein Fehler liegt!
    Bitte schreib auch noch dazu in welchem Netz deine Koordinaten"Grad" sind, da gibt es auch jede Menge! WGS84, Potsdamer Datum, Europäisches Datum 1950 und und und


    Viele Grüße
    Manuel


    Bitte hier posten. Könnte mir vorstellen, dass das auch andere interessiert - mich z.B.

  • Zitat

    Original von karomue
    [quote]
    Bitte hier posten. Könnte mir vorstellen, dass das auch andere interessiert - mich z.B.


    Ja das ist noch besser! Dann können sich mehrere darüber die Köpfe zerbrechen!


    Ps. karomue schau mal mit den "Zitat" klappt es jetzt prima :D :D :D
    nochmals Danke

  • Zitat

    Original von luckywellman


    Ja das ist noch besser! Dann können sich mehrere darüber die Köpfe zerbrechen!


    Ps. karomue schau mal mit den "Zitat" klappt es jetzt prima :D :D :D
    nochmals Danke


    <lach>, bis auf das einsame "quote"... :]

  • Hallo Charly,


    das mit der Tabelle ist mir schon klar. Ich brauche aber die (eine) Formel zum Programmieren. Deshalb die Frage, ob "eure" Formel generell für 2 beliebige Punkte gültig ist.


    Nochmal zur 2. Frage (hatte eigentlich gehofft, dass es klar genug ist):


    Der Hintergrund ist folgender: bei Destinator ist einer Karte eine Ursprungsposition zugeordnet, welche die "linke untere Ecke" (also süd-westlichste Ecke) ist. Alle Angaben für z.B. POI's werden in 6 Bytes als Offset zu diesem Punkt in Metern angegeben. Wenn ich also die Koordinate für einen POI berechnen will, muss ich den Ursprungspunkt nehmen und die beiden Offsets auf die Länge und die Breite draufaddieren.


    Genau da habe ich nun mein Problem. Wenn ich das nach meinen, im Eingangsposting beschrieben, Formeln mache, komme ich tatsächlich auf den richtigen Breitenwert. Nur mit dem Längenwert hapert's noch.


    Da ich mir mit Destinator ja die Koordinaten eines POI anzeigen lassen kann, weiss ich, was als Zielkoordinate rauskommen muss. Und ich komme für den Längengrad einfach nicht auf das Ergebnis, was Destinator errechnet.


    Hoffe, dass es nun klarer ist, was ich brauche. Wenn nicht, formuliere ich es gerne nochmal um.... :) , da ich jede Hilfe brauchen kann....


    Grüße


    Andreas

  • Zitat

    Original von luckywellman
    Bitte schreib auch noch dazu in welchem Netz deine Koordinaten"Grad" sind, da gibt es auch jede Menge! WGS84, Potsdamer Datum, Europäisches Datum 1950 und und und


    Ich kann dir leider nicht sagen, welches Datumsformat verwendet wird. Gibt es irgend eine Chance, anhand von einem bekannten Punkt und dessen Koordinaten Rückschlüsse auf das Datumsformat zu machen?


    Ich kann in Destinator mir die Koordinaten für jeden (fast) beliebigen Punkt geben lassen.....


    Meinst du, dass ich bei meiner Berechnung das Datumsformat wissen muss?


    Grüße


    Andreas


    P.S. Ach ja, ich habe wegen Charly nochmals versucht zu erklären, was das ganze für einen Hintergrund hat und was ich rauskriegen möchte. Das erklärt auch, weshalb mir das Ergebnis bereits bekannt ist. Falls ich doch noch mehr erklären soll, bitte sagen, mach ich gerne....

    Einmal editiert, zuletzt von omega ()

  • Hallo Andreas,


    die Formel die wir für die Excel-Tabelle zu Grunde gelegt haben stammt aus Wolfgang Linke, Orientierung mit Karte, Kompaß, GPS. Bild der Seite hängt an.


    Für Dein Problem: da habe ich auf die schnelle keine Lösung, werde es mir aber mal durch den Kopf gehen lassen. Da ist natürlich der üble cos-Wert bei den Längengrad-Abständen drin.


    Dazu gilt auch generell: man muss sich schon überlegen, nimmt man die Länge von Breite 1, oder Breite 2, oder (1+2)/2. Je nachdem wie weit die Breiten auseinander sind, wird der Fehler schon recht groß.

  • Zitat


    Ich kann dir leider nicht sagen, welches Datumsformat verwendet wird. Gibt es irgend eine Chance, anhand von einem bekannten Punkt und dessen Koordinaten Rückschlüsse auf das Datumsformat zu machen?
    Ich kann in Destinator mir die Koordinaten für jeden (fast) beliebigen Punkt geben lassen.....


    Meinst du, dass ich bei meiner Berechnung das Datumsformat wissen muss?


    solange du in den einem Netz bleibst und in diesem rechnest, brauchst du nicht zu wissen welches Netz das ist. Nur wenn du die Koordinaten in ein anderes Netz transferierst(zb. Gauß Krüger) wird es interessant. Da sind dann schnell mal 20 meter unterschied in den Koordinaten. Das muß aber doch irgendwo in der Anleitung von deinem Programm stehen in welchem Netz Destinator die ausgibt. Ich denke mal das es WGS 84 sein wird, das ist das gebräuchlichste!

    Zitat


    P.S. Ach ja, ich habe wegen Charly nochmals versucht zu erklären, was das ganze für einen Hintergrund hat und was ich rauskriegen möchte. Das erklärt auch, weshalb mir das Ergebnis bereits bekannt ist. Falls ich doch noch mehr erklären soll, bitte sagen, mach ich gerne....


    Nein brauchst du nicht, von Computern und Programmieren habe ich eh null Ahnung! Ich glaube ich weiß jetzt aber was du vorhast. Ich werde Morgen früh auf der Arbeit(da hab ich viel Zeit) mal versuchen das zu rechnen, vieleicht klappt es ja!

  • Zitat

    Original von luckywellman


    Ich werde Morgen früh auf der Arbeit(da hab ich viel Zeit) mal versuchen das zu rechnen, vieleicht klappt es ja!


    ;D he luckywellman, kann ich bei dir anfangen, sonn'en job such ich noch.
    LOL