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
Lepaskan: 2024-12-15 16:45:18
asal
223 orang telah melayarinya

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

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

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!

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