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

PHP MySQL mendapatkan lokasi dalam radius lokasi pengguna dari GPS

Menghitung jarak cukup mahal secara komputasi, seperti yang dikatakan orang lain. Mengembalikan set data yang besar juga bukan ide yang bagus - khususnya mengingat performa PHP tidak terlalu bagus.

Saya akan menggunakan heuristik, seperti memperkirakan jarak dengan penambahan dan pengurangan sederhana.

Cukup telusuri db dengan insiden dalam rentang tersebut (efektif persegi, bukan lingkaran), lalu Anda dapat mengerjakannya dengan PHP.

EDIT :Berikut alternatifnya; perkiraan yang jauh lebih murah secara komputasi:

Perkiraan jarak dalam mil:

sqrt(x * x + y * y)

where x = 69.1 * (lat2 - lat1) 
and y = 53.0 * (lon2 - lon1) 

Anda dapat meningkatkan akurasi perhitungan perkiraan jarak ini dengan menambahkan fungsi matematika kosinus:

Peningkatan perkiraan jarak dalam mil:

sqrt(x * x + y * y)

where x = 69.1 * (lat2 - lat1) 
and y = 69.1 * (lon2 - lon1) * cos(lat1/57.3) 

Sumber:http://www.meridianworlddata.com/Distance-Calculation.asp

EDIT 2 :Saya menjalankan banyak pengujian dengan kumpulan data yang dibuat secara acak.

  • Perbedaan akurasi untuk ketiga algoritme minimal, terutama pada jarak pendek
  • Algoritme paling lambat (yang memiliki banyak fungsi trigonometri) 4x lebih lambat dari dua lainnya.

Pasti tidak layak. Lakukan saja dengan perkiraan.

Kode ada di sini:http://pastebin.org/424186



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL jika kueri pemilihan mengembalikan 0 baris lalu kueri pemilihan lainnya?

  2. Bagaimana saya bisa melewatkan array parameter PDO namun tetap menentukan tipenya?

  3. Apakah pemicu basis data aman untuk batasan integritas tabel silang?

  4. meneruskan LIMIT sebagai parameter ke MySQL sproc

  5. Apakah ada alternatif untuk TOP di MySQL?