Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Jarak Antara Dua Titik Menggunakan Latitud dan Longitud dalam MySQL?
Mengira Jarak Antara Dua Titik Menggunakan Latitud dan Longitud dalam MySQL
Untuk menentukan jarak antara dua titik diberi latitud dan longitudnya, MySQL menyediakan formula yang berkuasa. Dalam senario ini, seorang pengguna berada di bandar 3 dan berusaha untuk mencari jarak kepada pengguna di bandar lain, seperti bandar 7.
Penyelesaian terletak pada menggunakan pertanyaan berikut:
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 ini menggunakan formula hukum kosinus sfera, yang mengira jarak dalam kilometer antara dua titik pada sfera. Ia bergabung dengan jadual itu sendiri, membenarkan pengambilan semula dua pasangan koordinat untuk pengiraan.
Hasil pertanyaan ini akan memberikan jarak antara bandar 3 dan bandar 7 dalam kilometer. Untuk mendapatkan jarak dalam batu statut, cuma gantikan pemalar 111.1111 dengan 69.0.
Untuk kecekapan dalam mencari titik berdekatan, pertimbangkan untuk menggunakan fungsi ST_Distance_Sphere:
select ST_Distance_Sphere( point(-87.6770458, 41.9631174), point(-73.9898293, 40.7628267))
Sebagai alternatif, pengiraan kotak sempadan boleh digunakan untuk mengoptimumkan lagi carian.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Jarak Antara Dua Titik Menggunakan Latitud dan Longitud dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!