Cara Mendapatkan Keputusan Dalam Jejari Penanda daripada Pangkalan Data: Pendekatan SQL untuk Pengiraan Jarak Tepat

Mary-Kate Olsen
Lepaskan: 2024-11-01 05:40:02
asal
331 orang telah melayarinya

How to Retrieve Results Within a Marker Radius from a Database: A SQL Approach to Accurate Distance Calculation

Cara Mendapatkan Keputusan dalam Jejari Penanda daripada Pangkalan Data: Pengiraan Jarak Tepat

Untuk menentukan dengan tepat keputusan yang termasuk dalam jejari penanda yang ditentukan daripada pangkalan data, adalah penting untuk mempertimbangkan persamaan bulatan:

(x-x1)^2 + (y - y1)^2 = r^2
Salin selepas log masuk

di mana (x,y) mewakili titik dalam bulatan, (x1, y1) ialah pusat bulatan dan r ialah jejarinya .

Dalam konteks soalan ini, pusat bulatan ialah lokasi penanda pengguna (latitud dan longitud), manakala padanan atau keputusan yang berpotensi diwakili oleh titik dalam bulatan. Jejari ditetapkan kepada 1 kilometer.

Untuk menangani isu unit yang berbeza (darjah untuk latitud dan longitud berbanding kilometer untuk jejari), persamaan diubah suai seperti berikut:

((x-x1)*111.12)^2 + ((y-y1)*111.12)^2 = 4 (where 2 is the radius in kilometers and 111.12 represents the conversion factor from degrees to kilometers)
Salin selepas log masuk

Berdasarkan persamaan ini, pernyataan SQL untuk mendapatkan hasil yang bersilang dengan bulatan penanda boleh ditulis sebagai:

SELECT A.user_id, A.radius_id, A.latitude, A.logitude
FROM UserA AS A,
     (SELECT user_id, latitude, longitude
       FROM UserB
       WHERE user_id = 8) AS B
WHERE (POW((A.latitude-B.latitude)*111.12, 2) + POW((A.longitude - B.longitude)*111.12, 2)) <= 4
Salin selepas log masuk

Atas ialah kandungan terperinci Cara Mendapatkan Keputusan Dalam Jejari Penanda daripada Pangkalan Data: Pendekatan SQL untuk Pengiraan Jarak Tepat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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