Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengira Jarak Antara Dua Lokasi Menggunakan Latitud dan Longitud dalam MySQL?

Bagaimanakah Saya Boleh Mengira Jarak Antara Dua Lokasi Menggunakan Latitud dan Longitud dalam MySQL?

Barbara Streisand
Lepaskan: 2024-12-05 10:49:11
asal
328 orang telah melayarinya

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

Mengira Jarak Antara Titik Menggunakan Latitud dan Longitud dalam MySQL

Selalunya, ia menjadi perlu untuk menentukan jarak antara dua lokasi berdasarkan latitud dan koordinat longitud. Ini adalah tugas biasa dalam banyak senario, seperti mencari kemudahan berdekatan atau mengira jarak perjalanan. Untuk mengira jarak ini dengan tepat, MySQL menawarkan penyelesaian yang berkuasa.

Mari kita pertimbangkan senario di mana kita mempunyai jadual dengan nama bandar, latitud dan nilai longitud:

--------------------------------------------
| 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   |
--------------------------------------------
Salin selepas log masuk

Andaikan kita mahu hitung jarak antara bandar 3 dan bandar 7. Dengan menggunakan pertanyaan SQL yang disediakan, kita boleh mendapatkan semula jarak dalam kilometer:

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
Salin selepas log masuk

Pertanyaan memanfaatkan hukum kosinus sfera untuk mengira jarak, yang dinyatakan dalam kilometer.

Untuk kecekapan dan ketepatan, amalan terbaik adalah menggunakan pendekatan moden, seperti seperti berikut:

  select ST_Distance_Sphere(
    point(-87.6770458, 41.9631174),
    point(-73.9898293, 40.7628267)) 
Salin selepas log masuk

Dengan menggunakan fungsi MySQL yang sesuai, kita boleh menentukan dengan tepat jarak antara dua titik pada dunia, membolehkan kami menangani pelbagai keperluan berkaitan geolokasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Jarak Antara Dua Lokasi Menggunakan Latitud dan Longitud dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan