Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengira Jarak Bulatan Besar dalam MySQL Menggunakan Formula Haversine?

Bagaimana untuk Mengira Jarak Bulatan Besar dalam MySQL Menggunakan Formula Haversine?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-19 22:23:09597semak imbas

How to Calculate Great Circle Distance in MySQL Using the Haversine Formula?

Jarak Bulatan Besar MySQL Menggunakan Formula Haversine

Mengira jarak bulatan besar, juga dikenali sebagai jarak Haversine, dalam MySQL boleh dicapai melalui langkah berikut:

1. Dapatkan Nilai Longitud dan Latitud

Pertama, dapatkan koordinat longitud dan latitud daripada sumber data yang berkaitan (cth., skrip PHP).

2. Kira Jarak menggunakan Formula Haversine

Formula Haversine digunakan untuk mengira jarak bulatan besar antara dua titik pada sfera. Dalam MySQL, pernyataan SQL berikut melaksanakan formula:

(
    3959 * acos(
        cos( radians(origin_lat) ) * cos( radians(lat) ) * cos( radians(lon) - radians(origin_lon) ) +
        sin( radians(origin_lat) ) * sin( radians(lat) )
    )
)
  • origin_lat: Origin latitud
  • origin_lon: Origin longitud
  • lat: Sasaran latitud
  • lon: Sasaran longitud

3. Pertanyaan Dalam Julat Jarak

Untuk mencari lokasi dalam julat jarak yang ditentukan, gunakan pernyataan SQL berikut:

SELECT id,
    (
        3959 * acos(
            cos( radians(origin_lat) ) * cos( radians(lat) ) * cos( radians(lon) - radians(origin_lon) ) +
            sin( radians(origin_lat) ) * sin( radians(lat) )
        )
    ) AS distance
FROM locations
HAVING distance < distance_range
ORDER BY distance
LIMIT num_results;
  • lokasi: Jadual yang mengandungi lajur latitud dan longitud
  • jarak_jarak: Jarak maksimum dalam batu (atau kilometer jika menggunakan 6371 tetap)
  • num_results: Bilangan keputusan untuk dikembalikan

4. Contoh Pertanyaan SQL

Berikut ialah contoh pertanyaan SQL yang boleh digunakan untuk mencari 20 lokasi terdekat dalam 25 batu ke koordinat (37, -122):

SELECT id,
    (
        3959 * acos(
            cos( radians(37) ) * cos( radians(lat) ) * cos( radians(lon) - radians(-122) ) +
            sin( radians(37) ) * sin( radians(lat) )
        )
    ) AS distance
FROM locations
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;

Oleh mengikut langkah ini, anda boleh melakukan pengiraan jarak bulatan yang hebat sepenuhnya dalam MySQL menggunakan formula Haversine.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jarak Bulatan Besar dalam MySQL Menggunakan Formula Haversine?. 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