Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Formeln zur Berechnung der geografischen Nähe

Der Kosinussatz und die Haversine-Formel liefern identische Ergebnisse, wenn man von einer Maschine mit unendlicher Präzision ausgeht. Die Haversine-Formel ist robuster gegenüber Fließkommafehlern. Die heutigen Maschinen haben jedoch eine doppelte Genauigkeit in der Größenordnung von 15 signifikanten Stellen, und das Kosinusgesetz funktioniert möglicherweise gut für Sie. Beide Formeln gehen von einer kugelförmigen Erde aus, während Vicentys iterative Lösung (am genauesten) von einer ellipsenförmigen Erde ausgeht (in Wirklichkeit ist die Erde nicht einmal ein Ellipsoid - sie ist ein Geoid). Einige Referenzen:http://www.movable-type. co.uk/scripts/gis-faq-5.1.html

Es kommt noch besser:Beachten Sie, dass der im Kosinussatz zu verwendende Breitengrad sowie der Haversinus der geozentrische Breitengrad ist, der sich vom geodätischen Breitengrad unterscheidet. Für eine Kugel sind diese beiden gleich.

Welche ist am schnellsten zu berechnen?

In der Reihenfolge vom schnellsten zum langsamsten sind:Kosinusgesetz (5 trig. Aufrufe) -> Haversine (beinhaltet sqrt) -> Vicenty (muss dies iterativ in einer for-Schleife lösen)

Welches ist am genauesten?

Vicenza.

Welches ist am besten, wenn Geschwindigkeit und Genauigkeit berücksichtigt werden?

Wenn Ihr Problembereich so ist, dass für die Entfernungen, die Sie zu berechnen versuchen, die Erde als flach angesehen werden kann, können Sie (ich werde keine Details angeben) eine Formel der Form x =kx * Längenunterschied ausarbeiten , y =ky * Breitengradunterschied. Dann ist Abstand =sqrt(dxdx + dy dy). Wenn Ihre Problemdomäne so beschaffen ist, dass sie mit Distanz im Quadrat gelöst werden kann, müssen Sie nicht sqrt nehmen, und diese Formel wird so schnell wie möglich sein. Es hat den zusätzlichen Vorteil, dass Sie den Vektor berechnen können Distanz - x ist die Distanz in östlicher Richtung und y ist die Distanz in nördlicher Richtung. Andernfalls experimentieren Sie mit der 3 und wählen Sie, was in Ihrer Situation am besten funktioniert.