Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP / MySQL - Temukan semua item dalam radius 500 meter dari koordinat gps yang sebenarnya

Menghitung jarak antara dua koordinat sebenarnya tidak terlalu sulit mengingat rumus haversine.

SELECT 
  -- stuff here
  , ( 6371000 * acos( cos( radians(45.815005) ) * cos( radians( stuff.lat ) ) * cos( radians( stuff.lng ) - radians(15.978501) ) + sin( radians(45.815005) ) * sin(radians(stuff.lat)) ) ) AS distance 
FROM 
  stuff
HAVING 
  distance < 500

Referensi Jawaban

Perubahan yang diperlukan dari jawaban asli:

  1. Konstanta yang ditawarkan dalam jawaban asli memberikan nilai untuk mil atau kilometer. Saya telah mengubah konstanta di sini untuk bekerja dengan meter.

  2. Konstanta telah berubah untuk menggunakan koordinat Anda. Anda mungkin ingin menyesuaikan kueri sedikit lebih jauh untuk membuat parameter tersebut alih-alih konstanta.

  3. having ekspresi berubah sedikit untuk mencerminkan keinginan Anda untuk 500 meter. Sekali lagi, ini mungkin sesuatu yang ingin Anda parameterkan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memaksa PHP untuk membaca baris baru dan kembali sebagai

  2. Bagaimana cara meneruskan []slice ke kondisi IN dalam pernyataan SQL yang disiapkan dengan kondisi non-IN juga?

  3. Tidak dapat membatalkan serial objek setelah menyimpannya dalam database

  4. Penyortiran SQL tidak mengikuti grup demi pernyataan, selalu menggunakan kunci utama

  5. Perbedaan antara utf8 dan latin1