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 | --------------------------------------------
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
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))
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!