Ich teste verschiedene Formeln aus, um bestimmte Punkte auf der Erde innerhalb eines gegebenen Radius von einer gegebenen Breite/Länge zu finden. Ich habe das 'sphärische Kosinusgesetz' benutzt und was ich für eine Implementierung von Haversine halte.hairsine/sphärisches Gesetz von cosines/vincenty in sql query
Für die folgenden Formeln sind dies die Variablen:
[$ lat/$ lon] = Entstehungsort
[Breite/Länge] = zweiter Punkt
[$ radius] = Radius
Spherical Kosinussatz
3959 * acos(cos(radians('.$lat.')) * cos(radians(latitude)) * cos(radians(longitude) - radians('.$lon.')) + sin(radians('.$lat.')) * sin(radians(latitude)))) <= '.$radius.';
Haversine (zumindest ich denke, es ist!)
3959*3.1415926*sqrt((latitude-'.$lat.')*(latitude-'.$lat.') + cos(latitude/57.29578)*cos('.$lat.'/57.29578)*(longitude-'.$lon.')*(longitude-'.$lon.'))/180) <= '.$radius.';';
ich auf einer Vielzahl von Informationen zunächst kam sagen, dass Haversine der Goldstandard soweit Genauigkeit ist. Es scheint jedoch auch die Meinung zu bestehen, dass das sphärische Kosinussatz genauer ist als das von Haversine, solange die gemessene Entfernung mehr als 5 Meter beträgt. Außerdem sagen manche, dass Vincenty sowohl in Genauigkeit als auch in Trumpf übertrumpfen soll.
Drei Fragen:
Ist mein Haversine Formel tatsächlich Haversine oder es etwas anderes?
Irgendwelche Gedanken, die für genaueste gewinnt?
Kann mir jemand eine Formulierung für Vincenty entlang der Linien der oben genannten forumlas zur Verfügung stellen?
danke!
Q1: Ihre empfohlene Formel mit 'SELECT id beginnt, (3959 * acos (' ... die 'acos' Marken es als sphärische Kosinussatz Formel, auf jeden Fall nicht die Haversine Formel Q2.1 hairsine ist NICHT schneller Q2.2 sphärisches Gesetz der Kosinus ist weniger genau über kleine Unterschiede. –