Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Jarak Antara Dua Koordinat Geografi dalam MySQL?

Bagaimana untuk Mengira Jarak Antara Dua Koordinat Geografi dalam MySQL?

Susan Sarandon
Susan Sarandonasal
2024-12-15 16:45:18224semak imbas

How to Calculate the Distance Between Two Geographic Coordinates in MySQL?

Menentukan Jarak Antara Koordinat Geografi dalam MySQL Menggunakan Latitud dan Longitud

Pertanyaan anda menggunakan formula hukum kosinus sfera untuk mengira jarak antara satu titik dan semua yang lain. Untuk mencari jarak antara dua titik tertentu, ubah suai pertanyaan anda seperti 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 mendapatkan semula pasangan koordinat untuk dua bandar (3 dan 7) dan menggunakan formula, menghasilkan jarak dalam kilometer.

Untuk titik berdekatan, elakkan menggunakan penapis berasaskan jarak kerana ia boleh menjadi perlahan. Sebaliknya, gunakan teknik pengiraan kotak sempadan, seperti yang diterangkan di sini: http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/.

Penyelesaian Moden (2022)

Untuk mengikuti perkembangan teknologi terkini, pertimbangkan untuk menggunakan yang dipendekkan berikut kod:

SELECT ST_Distance_Sphere(
point(-87.6770458, 41.9631174),
point(-73.9898293, 40.7628267))

Pertanyaan ini menggunakan fungsi ST_Distance_Sphere() untuk mengira jarak antara dua titik.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jarak Antara Dua Koordinat Geografi dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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