Berechnen des Abstands zwischen zwei Punkten mithilfe von Breiten- und Längengrad in MySQL
Um den Abstand zwischen zwei Punkten anhand ihres Breiten- und Längengrads zu bestimmen, bietet MySQL Folgendes an eine kraftvolle Formel. In diesem Szenario befindet sich ein Benutzer in Stadt 3 und möchte die Entfernung zu Benutzern in anderen Städten, beispielsweise Stadt 7, ermitteln.
Die Lösung liegt in der Verwendung der folgenden Abfrage:
SELECT a.city AS from_city, b.city AS to_city, 111.111 * DEGREES(ACOS(LEAST(1.0, COS(RADIANS(a.Latitude)) * COS(RADIANS(b.Latitude)) * COS(RADIANS(a.Longitude - b.Longitude)) + SIN(RADIANS(a.Latitude)) * SIN(RADIANS(b.Latitude))))) AS distance_in_km FROM city AS a JOIN city AS b ON a.id <> b.id WHERE a.city = 3 AND b.city = 7
Diese Abfrage verwendet die Formel des sphärischen Kosinusgesetzes, die den Abstand in Kilometern zwischen zwei Punkten auf einer Kugel berechnet. Es verknüpft die Tabelle mit sich selbst und ermöglicht den Abruf von zwei Koordinatenpaaren zur Berechnung.
Das Ergebnis dieser Abfrage liefert die Entfernung zwischen Stadt 3 und Stadt 7 in Kilometern. Um die Entfernung in gesetzlichen Meilen zu erhalten, ersetzen Sie einfach die Konstante 111,1111 durch 69,0.
Für eine effizientere Lokalisierung nahegelegener Punkte sollten Sie die Verwendung der Funktion ST_Distance_Sphere in Betracht ziehen:
select ST_Distance_Sphere( point(-87.6770458, 41.9631174), point(-73.9898293, 40.7628267))
Alternativ kann die Berechnung des Begrenzungsrahmens erfolgen eingesetzt werden, um die Suche weiter zu optimieren.
Das obige ist der detaillierte Inhalt vonWie berechnet man den Abstand zwischen zwei Punkten mithilfe von Breiten- und Längengrad in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!