Heim > Datenbank > MySQL-Tutorial > Wie kann ich die Entfernung zwischen zwei Standorten mithilfe von Breiten- und Längengrad in MySQL berechnen?

Wie kann ich die Entfernung zwischen zwei Standorten mithilfe von Breiten- und Längengrad in MySQL berechnen?

Barbara Streisand
Freigeben: 2024-12-05 10:49:11
Original
324 Leute haben es durchsucht

How Can I Calculate the Distance Between Two Locations Using Latitude and Longitude in MySQL?

Berechnung der Interpunktentfernung mithilfe von Breiten- und Längengrad in MySQL

Oft ist es notwendig, die Entfernung zwischen zwei Standorten anhand ihrer Breiten- und Längengrade zu bestimmen Längenkoordinaten. Dies ist in vielen Szenarien eine häufige Aufgabe, beispielsweise bei der Suche nach Annehmlichkeiten in der Nähe oder bei der Berechnung von Reiseentfernungen. Um diese Entfernung genau zu berechnen, bietet MySQL eine leistungsstarke Lösung.

Betrachten wir ein Szenario, in dem wir eine Tabelle mit Städtenamen sowie Breiten- und Längengradwerten haben:

--------------------------------------------
| id  |  city  |  Latitude  |  Longitude  |
--------------------------------------------
| 1   |   3    |   34.44444 |   84.3434   |
--------------------------------------------
| 2   |   4    | 42.4666667 | 1.4666667   |
--------------------------------------------
| 3   |   5    |  32.534167 | 66.078056   |
--------------------------------------------
| 4   |   6    |  36.948889 | 66.328611   |
--------------------------------------------
| 5   |   7    |  35.088056 | 69.046389   |
--------------------------------------------
| 6   |   8    |  36.083056 |   69.0525   |
--------------------------------------------
| 7   |   9    |  31.015833 | 61.860278   |
--------------------------------------------
Nach dem Login kopieren

Angenommen, wir möchten Berechnen Sie die Entfernung zwischen Stadt 3 und Stadt 7. Mit der bereitgestellten SQL-Abfrage können wir die Entfernung in Kilometern abrufen:

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

Die Abfrage nutzt die sphärisches Kosinusgesetz zur Berechnung der Entfernung, die in Kilometern ausgedrückt wird.

Für Effizienz und Präzision empfiehlt es sich, einen modernen Ansatz zu verwenden, wie zum Beispiel den folgenden:

  select ST_Distance_Sphere(
    point(-87.6770458, 41.9631174),
    point(-73.9898293, 40.7628267)) 
Nach dem Login kopieren

Durch den Einsatz Mithilfe geeigneter MySQL-Funktionen können wir die Entfernung zwischen zwei Punkten auf dem Globus genau bestimmen und so eine Vielzahl geolokalisierungsbezogener Anforderungen erfüllen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Entfernung zwischen zwei Standorten mithilfe von Breiten- und Längengrad in MySQL berechnen?. 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