Latitude Longitude Berechnung Klappt nicht

  • Hallo, ich habe folgendes script um die berechnung zwischen Frankfurt und Berlin zu berechnen

    [autoit]


    $lat1=50.11222
    $lon1=08.68194
    $lat2=52.52222
    $lon2=13.29750
    $dist = 6378.388 * acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($lon2 - $lon1))
    MsgBox(0,"",$dist)

    [/autoit]


    nun, das ergebnis ist irgendwie falsch, was muss ich verändern, um die distanz in KM zu haben?

    Einmal editiert, zuletzt von Sundown (27. Juni 2011 um 21:54)

  • Ja, das hab ich auch schon gefunden, allerdings würde ich trotzdem gern wissen, was ich falsch gemacht habe.

  • Ich vermute, deine Angaben sind im Gradmaß und Sinus und Cosinus erwarten Bogenmaß.

  • hab ich auch schon überlegt, werde es gleich mal umrechnen, stay tuned

    Edit: Ja, jetzt geht es, weiß nicht wie genau es ist, aber es wird schon passen

    [autoit]


    $PI = ATan(1)*4
    $lat1=50.11222 * $pi / 180
    $lon1=08.68194 * $pi / 180
    $lat2=52.52222 * $pi / 180
    $lon2=13.29750 * $pi / 180
    $dist = 6378.388 * acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($lon2 - $lon1))
    MsgBox(0,"",$dist)

    [/autoit]

    Einmal editiert, zuletzt von Sundown (27. Juni 2011 um 21:54)

  • weiß nicht wie genau es ist, aber es wird schon passen

    "Genauigkeit" ist ein relativer Begriff.
    Kommt darauf an was du mit diesen Werten machen willst und daraus bestimmt sich dann die geforderte Genauigkeit.
    Rein mathematisch ist der von dir bestimmte Wert formal richtig berechnet für eine Kugel mit dem Durchmesser 6378.388km.
    Die Frage ist nur: wie genau entspricht die Form der Strecke zwischen deinen beiden Orten einem Kreisbschnitt mit diesem Durchmesser?
    Denn die Erde ist keine Kugel.
    Sie wird mathematisch für viele höhere Koordinatensysteme stattdessen durch ein Rotationsellipsoid modelliert (z.B. WGS84 bei GPS).
    Berechnungen auf Basis eines Ellipsoides kommen der "richtigen" Entfernung näher als eine simple Berechnung auf der Kugel.
    Das ganze läuft dann aber auf ellipsoidische Integrale hinaus die analytisch nicht geschlossen berechenbar sind (Stichwörter: geodätische Linie, 2. geodätische Hauptaufgabe).
    Daher wird stattdessen meist auf eine aufwendige iterative numerische Berechnung ausgewichen.
    Wenn du nun also der Meinung bist die erweiterte Genauigkeit zu benötigen und dich dieser Berechnung stellst dann wäre noch die Frage zu klären: Welches Ellipsoid soll als Berechnungsgrundlage dienen?
    Für globale Berechnungen sollte man auf entsprechende globale Ellipsoide ausweichen.
    Für lokale Berechnungen (wie eben im Beispiel bei dir) bringen lokal angepasste Ellipsoide genauere Werte bei entsprechenden Berechnungen (für unseren Bereich z.B. das Bessel-Ellipsoid).
    Aber auch dies ist nur eine Modellierung und Annäherung an den "richtigen" Wert. Die Erde ist ja eigentlich ein sogenanntes Geoid - aber Berechnungen darauf brauchen wir hier nicht weiter zu erörtern...
    Wenn dir die Berechnung über ein Ellipsoid zu schwierig erscheint (und ja - es ist wirklich nicht trivial) dann könntest du zumindestens einen vernünftigen Radius für deine Kugel automatisch aus den geographischen Daten deiner beiden Punkte berechnen.
    Dazu wird mit einem Ellipsoid und den beiden Breiten eine Gaußsche Schmiegungskugel berechnet deren Radius sich dem Rechengebiet bestmöglich anpasst.

    Aber alles wie gesagt: Wenn dir die Genauigkeit ausreicht brauchst du auch keinen erhöhten Aufwand treiben.

  • Ich möchte die distanz die ein Flugzeug zum Zielflughafen hat berechnen, und daraus dann die erwartete ankunftszeit (ETA) errechnen. Das ganze ist für eine organisation, die den Zivilen Flugverkehr virtuell nach ahmt. Also variiert die distanz zwischen sehr lokal (z.B. München Frankfurt) aber auch sehr weit (z.B. Auckland-Frankfurt). Wie ungenau würde das denn dann, bezogen auf meine Formel, werden? Beim krassesten Beispiel Auckland-Frankfurt. Vor allem wenn man dann noch die ETA berechnen will.

  • Wie ungenau würde das denn dann, bezogen auf meine Formel, werden? Beim krassesten Beispiel Auckland-Frankfurt.


    Für dein Beispiel Frankfurt-Auckland habe ich mal folgende Koordinaten angenommen:

    Code
    BFr = 50.111806°
    LFr = 8.685944°
    BAu = -36.85°
    LAu = 174.783333°


    Gerechnet auf deinem Kreis mit dem Radius 6378.388km würde 18189.80km herauskommen.
    Ellipsoidisch berechnet auf dem WGS84-Ellipsoid würde man hingegen 18162.97km bekommen - also knapp 27km Unterschied.

  • Ich denke die sind für eine Zeitliche berechnung nicht so sehr von bedeutung, zumal es dann ja, denke ich, sowieso genauer wird, je näher man seinem Ziel kommt.
    Vielen dank für deine bemühungen und das vergleichen der beiden Formeln.
    Ich werde vermutlich diese Formel als Rechnung beibehalten da sie bis jetzt "genau genug" ist. Danke nochmal