Heim > Datenbank > MySQL-Tutorial > Wie berechnet man den Abstand zwischen zwei Punkten mithilfe von Breiten- und Längengrad in MySQL?

Wie berechnet man den Abstand zwischen zwei Punkten mithilfe von Breiten- und Längengrad in MySQL?

Linda Hamilton
Freigeben: 2024-12-18 12:05:20
Original
604 Leute haben es durchsucht

How to Calculate the Distance Between Two Points Using Latitude and Longitude in MySQL?

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
Nach dem Login kopieren

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)) 
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage