Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Jarak Antara Dua Titik Menggunakan Latitud dan Longitud dalam MySQL?

Bagaimana untuk Mengira Jarak Antara Dua Titik Menggunakan Latitud dan Longitud dalam MySQL?

Linda Hamilton
Lepaskan: 2024-12-18 12:05:20
asal
604 orang telah melayarinya

How to Calculate the Distance Between Two Points Using Latitude and Longitude in 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
Salin selepas log masuk

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

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!

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