Entfernungen und MySql

MySql

Entfernungen und MySql

Ist hier schonmal jemand in die Verlegenheit geraten eine Entfernung zwischen zwei Geokoordinaten auf MySql Basis berechnen zu müssen? Nein? Ich schon. Dieser Artikel Bildet die Grundlage dafür.

Wie berechnet man die Entfernung zwischen zwei Punkten auf der Erde?

Nehmen wir zunächst mal an, dass die Erde eine Kugel ist. Wir wissen natürlich, dass das Blödsinn ist, aber in der Regel ist die Genauigkeit hinreichend. Wir wollen und schließlich nicht die Finger brechen.

Nehmen wir also an, die Erde sei eine Kugel mit einem Äquatorradius von 6378,137km.

Im Ersten Schritt müssen wir die Grad-, Minuten und Sekunden in eine Dezimalzahl umrechnen. Das Geht wie folgt:

Breite Frankfurt: 50 + (06 / 60) + (44 / 3600) = 50,11222°
Länge Frankfurt:  08 + (40 / 60) + (55 / 3600) = 08,68194°
Breite Berlin…: 52 + (31 / 60) + (20 / 3600) = 52,52222°
Länge Berlin…:  13 + (17 / 60) + (51 / 3600) = 13,29750°

Umrechnung der Gradzahl in RAD:
Breite Frankfurt: (Breite1) 50,11222° / 180 * PI = 0,87462
Länge Frankfurt:  (Länge1)  08,68194° / 180 * PI = 0,15153
Breite Berlin…: (Breite2) 52,52222° / 180 * PI = 0,91669
Länge Berlin…:  (Länge2)  13,29750° / 180 * PI = 0,23209

Was zur hölle heißt denn RAD?

RAD ist das Einheitszeichen für Radiant und beschreibt eine Hilfsmaßeinheit für die Angabe der größe eines ebenen Winkels im Bogenmaß.
Die Formel zur Entfernungsberechnung bedient sich einer Einheitskugel:

Die Tatsächliche Entfernung berechnet man jetzt mit: 

e = ARCCOS[ SIN(Breite1)*SIN(Breite2) + COS(Breite1)*COS(Breite2)*COS(Länge2-Länge1) ]
e = ARCCOS[ SIN(0,87462)*SIN(0,91669) + COS(0,87462)*COS(0,91669)*COS(0,23209-0,15153) ]
e = ARCCOS[ 0,60892 + 0,38893 ]
e = 0,06559

Nun muss der ausgerechnete Wert nur noch mit dem Äquatorradius multipliziert werden:
Entfernung = e * r = 0,06559 * 6378,137 km = 418,34 km

Diese Formel gilt für GeoKoordinaten auf der nördlichen Erdhalbkugel und Werte die östlich von Greenwich liegen. Also Erdkoordinaten mit einem N und O. Die gleiche Formel kann man auch für alle anderen Koordinaten benutzen, man muss nur bei Süd- und Westwerten jeweils ein Minus davor stellen. Also Süd und West Werte mit -1 multiplizieren.

Nur der Vollständigkeit halber: Die Formeln habe ich von koordinaten.de entlehnt. Sie dienen hier dem Beginn einer Artikelserie zur Entfernungsberechnung mit MySql.

Diskussion

Keine Kommentare zu “Entfernungen und MySql”

Post a comment