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

Pilih poin dari database peta sesuai dengan radius

Terkadang parameter ke ACOS() bisa sedikit lebih besar dari 1 -- sedikit di luar domain fungsi itu -- bila jaraknya kecil. Ada formula jarak yang lebih baik yang tersedia, karena Vincenty. Ia menggunakan ATAN2(y,x) fungsi daripada ACOS() fungsi dan lebih stabil secara numerik.

Ini dia.

DEGREES(
    ATAN2(
      SQRT(
        POW(COS(RADIANS(lat2))*SIN(RADIANS(lon2-lon1)),2) +
        POW(COS(RADIANS(lat1))*SIN(RADIANS(lat2)) -
             (SIN(RADIANS(lat1))*COS(RADIANS(lat2)) *
              COS(RADIANS(lon2-lon1))) ,2)),
      SIN(RADIANS(lat1))*SIN(RADIANS(lat2)) +
      COS(RADIANS(lat1))*COS(RADIANS(lat2))*COS(RADIANS(lon2-lon1))))

Fungsi ini mengembalikan hasilnya dalam derajat. Ada 111,045 km dalam satu derajat. 60 mil laut. 69 mil undang-undang. Jadi kalikan hasilnya dengan salah satu angka tersebut untuk mendapatkan jarak. Ada tulisan yang lebih lengkap, termasuk definisi fungsi tersimpan untuk MySQL, di sini .

Solusi lain adalah dengan menggunakan ISNULL(ACOS(formula), 0.0)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di Apache Spark 2.0.0, apakah mungkin mengambil kueri dari database eksternal (daripada mengambil seluruh tabel)?

  2. MySQL:pilih elemen pertama dari daftar yang dipisahkan koma

  3. Rekayasa Balik Database MySQL menggunakan MySQL Workbench

  4. Hanya variabel yang harus diteruskan dengan referensi di... pada baris 13 Gagal

  5. Pilih catatan dari hari ini, minggu ini, bulan ini php mysql