Wie kann man in MS Excel oder LibreOffice einen "großen Kreis" berechnen?

3

Ich habe zwei Spalten mit Breiten- und Längenwerten. Ich muss den Abstand zwischen den Punkten in jeder Reihe berechnen. Ich versuche das zu benutzen Haversine Formel wie gesehen Hier :

haversine calculation

Das ist die sogenannte "Großkreis" -Berechnung. Ich muss diese Berechnung mit einer großen Anzahl von Koordinaten durchführen.

Die Daten sehen so aus:

  |        A        B    C    D    E   F    G
--|-------------------------------------------
0 |      LAT      LON rLAT dLAT dLON   a DIST
1 | 52.39964 13.04729  ...  ...  ... ...     
2 | 52.39985 13.04802  ...  ...  ... ...  ???
3 | 52.40116 13.04744  ...  ...  ... ...  ???
4 | 52.40147 13.04722  ...  ...  ... ...  ???
5 | 52.40163 13.04685  ...  ...  ... ...  ???
6 |      ...      ...  ...  ...  ... ...  ...

Was ich jetzt ausprobiert habe, ist das Folgende für das Feld G2 in LibreOffice:

C2=RADIANS(A2)
D2=RADIANS(A2-A1)
E2=RADIANS(B2-B1)
F2=SIN(D2/2)*SIN(D2/2)+SIN(E2/2)*SIN(E2/2)*COS(C1)*COS(C2)
G2=2*ATAN2(SQRT(F2), SQRT(1-F2))*6371

Das Ergebnis für G2 ist 20015 was ganz ... falsch ist.

Wie berechne ich in Microsoft Excel oder LibreOffice Calc die Entfernung zwischen zwei durch Breite und Länge angegebenen Punkten? Was ist los mit meiner Formel?

Afri
quelle
3
Schnelle Google-Suche: bluemm.blogspot.com/2007/01/…
Brian Adkins

Antworten:

5

Wie gefunden Hier durch BrianAdkins Diese Excel-Formel zur Berechnung der Entfernung zwischen zwei Breiten- und Längenpunkten funktioniert für mich sowohl in LibreOffice Calc als auch in Microsoft Excel 2013:

=ACOS(COS(RADIANS(90-A1))*COS(RADIANS(90-A2))+SIN(RADIANS(90-A1))*SIN(RADIANS(90-A2))*COS(RADIANS(B1-B2)))*6371

Das Ergebnis ist in Kilometern, für kleine Entfernungen habe ich verwendet *1000 um die Entfernung in Metern anzuzeigen.

  |        A        B      C
--|--------------------------
0 |      LAT      LON   DIST
1 | 52.39964 13.04729               
2 | 52.39985 13.04802   54.8
3 | 52.40116 13.04744  150.9
4 | 52.40147 13.04722   37.6
5 | 52.40163 13.04685   30.8
6 |      ...      ...    ...

Um Entfernungen in Meilen anzuzeigen, ersetzen Sie *6371 mit *3958.

Afri
quelle
2

Die Haversine-Methode ist gut, solange Sie bereit sind, einen Fehlerfaktor zu akzeptieren, oder wenn Sie nur mit einer Arbeitsblattformel implementieren müssen. Für kurze Strecken und unkritische Situationen wird es wahrscheinlich in Ordnung sein. Aber wenn Sie Präzision benötigen, müssen Sie so etwas wie den von Thaddeus Vincenty entwickelten Algorithmus verwenden. Die Ergebnisse werden basierend auf der Genauigkeit der verwendeten Lat / Long-Paare als millimetergenau angesehen. Wie viel Unterschied zwischen den beiden? Zwischen JFK und Tokio beträgt die Differenz ca. 14,9 Meilen (kurz). Zwischen Los Angeles und Honolulu sind Sie nur ca. 5 km von der Insel entfernt.

Eine gute Implementierung des Vincenty-Algorithmus in Visual Basic (wie für Excel) finden Sie unter: http://lost-species.livejournal.com/38453.html Der Code wird in 32-Bit-Versionen von Excel im Ist-Zustand ausgeführt, schlägt jedoch mit dem Fehler "Formel zu komplex" in der 64-Bit-Version von Excel fehl. Knapp unterhalb der Veröffentlichung des gesamten Codes habe ich ein Update für dieses Problem veröffentlicht, mit dem es sowohl auf 32- als auch auf 64-Bit-Versionen der VBA-Engine ausgeführt werden kann.

Grüße, J. Latham, Microsoft MVP, Excel 2006-2014

J.Latham
quelle
0

Vollständige direkte / inverse Vincentys-Formeln Excel VBA-Implementierung (32/64 Bit-Add-In), die nicht nur die Entfernungsberechnung, sondern auch Azimut und umgekehrtes Azimut ermöglicht, ist unter verfügbar https://github.com/tdjastrzebski/VincentyExcel

T. Jastrzębski
quelle
-1

Wenn Sie die folgenden Argumente umkehren:

War: G2 = 2 · ATAN2 (SQRT (F2), SQRT (1 - F2)) · 6371

Ist: G2 = 2 · ATAN2 (SQRT (1 - F2), SQRT (F2)) · 6371

Sie sollten die richtige Antwort erhalten. Ich hoffe das hilft!

abiMath
quelle
Können Sie eine kurze Erklärung hinzufügen, warum dies das Problem behebt? Vielen Dank.
fixer1234