Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Jarak Antara Dua Bandar Menggunakan MySQL?
Soalan:
Anda mempunyai jadual yang mengandungi data bandar dengan latitud dan longitud koordinat. Anda perlu mengira jarak antara dua bandar tertentu dari jadual ini. Bimbing kami melalui proses tersebut.
Jawapan:
Untuk mengira jarak antara dua titik menggunakan latitud dan longitudnya, kita boleh menggunakan formula undang-undang kosinus sfera dalam MySQL. Berikut ialah penyelesaian terperinci:
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
Dalam pertanyaan ini, kami melakukan penyambungan sendiri pada jadual bandar untuk mendapatkan semula pasangan koordinat bagi kedua-dua bandar. Kami kemudiannya menggunakan formula undang-undang kosinus sfera untuk mengira jarak antara mereka, yang diberikan dalam kilometer.
Nota:
Jika anda lebih suka mempunyai jarak dalam statut batu dan bukannya kilometer, gantikan pemalar 111.111 dengan 69.0.
Sebagai alternatif, untuk pendekatan yang lebih moden:
Seperti yang dicadangkan oleh Alexio Vay, anda boleh menggunakan fungsi ST_Distance_Sphere() dalam MySQL, yang menyediakan ringkas dan cara yang cekap untuk mengira jarak antara dua titik:
select ST_Distance_Sphere( point(-87.6770458, 41.9631174), point(-73.9898293, 40.7628267))
Atas ialah kandungan terperinci Bagaimana untuk Mengira Jarak Antara Dua Bandar Menggunakan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!