Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Mengira Jarak Bulatan Hebat Menggunakan Hanya MySQL?

Bagaimanakah Saya Boleh Mengira Jarak Bulatan Hebat Menggunakan Hanya MySQL?

Susan Sarandon
Lepaskan: 2024-12-26 14:18:11
asal
627 orang telah melayarinya

How Can I Calculate Great Circle Distance Using Only MySQL?

MySQL Great Circle Distance (Haversine Formula)

Artikel ini menangani cabaran untuk mengira jarak bulatan besar antara dua koordinat geografi menggunakan MySQL semata-mata . Pelaksanaan PHP tradisional, yang melibatkan berbilang pertanyaan SQL dan pengiraan yang rumit, boleh menyusahkan.

Penyelesaian

Untuk menukar kod PHP kepada MySQL tulen, kami memanfaatkan formula Haversine , persamaan matematik yang mengira jarak antara dua titik pada sfera. Formula ini disokong oleh fungsi MySQL ACOS() dan RADIANS().

Berikut ialah pertanyaan MySQL yang sepadan:

SELECT id, (
  3959 * ACOS(
    COS(RADIANS(37)) * COS(RADIANS(lat))
    * COS(RADIANS(lon) - RADIANS(-122)) + SIN(RADIANS(37)) * SIN(RADIANS(lat))
  )
) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;
Salin selepas log masuk

Penjelasan

  • Pertanyaan memilih id dan jarak yang dikira daripada penanda jadual.
  • Fungsi ACOS() mengira sudut antara dua titik, yang kemudiannya didarabkan dengan 3959 (jejari Bumi dalam batu atau 6371 untuk kilometer).
  • RADIAN() fungsi menukarkan koordinat kepada radian.
  • Klausa HAVING menapis hasil yang jaraknya kurang daripada 25 batu (atau kilometer).
  • Klausa ORDER BY mengisih keputusan mengikut jarak dalam tertib menaik.
  • Klausa LIMIT mengehadkan bilangan keputusan kepada 20.

Dengan menggunakan pendekatan berasaskan MySQL ini, anda boleh mengira dengan cekap jarak bulatan antara koordinat tanpa memerlukan pengiraan PHP luaran atau SQL tambahan pertanyaan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Jarak Bulatan Hebat Menggunakan Hanya MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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