Bagaimana untuk Mendapatkan Mata Data Dalam Jejari Penanda Bertindih daripada Pangkalan Data Geospatial?

Patricia Arquette
Lepaskan: 2024-10-30 09:48:27
asal
196 orang telah melayarinya

How to Retrieve Data Points Within Overlapping Marker Radii from a Geospatial Database?

Mendapatkan Keputusan Dalam Jejari Penanda Bertindih daripada Pangkalan Data

Objektifnya adalah untuk mendapatkan titik data yang berada dalam jejari bertindih berbilang penanda dalam pangkalan data geospatial. Untuk mencapai matlamat ini, anda mesti menggunakan persamaan bulatan untuk menentukan sama ada titik terletak dalam jejari tertentu.

Mengambil kira lokasi Pengguna B sebagai pusat bulatan dan lokasi Pengguna A sebagai titik pada perimeter bulatan, persamaan itu daripada bulatan, ditukar kepada kilometer untuk ketekalan, berubah menjadi:

((x-x1)*111.12)^2 + ((y-y1)*111.12)^2 = 4      (=2^2)
Salin selepas log masuk

di mana:

  • x dan y mewakili latitud dan longitud lokasi Pengguna A
  • x1 dan y1 mewakili latitud dan longitud lokasi Pengguna B
  • 111.12 menukar darjah latitud dan longitud kepada kilometer

Menterjemahkan persamaan ini kepada hasil SQL:

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

Nota: Untuk ketepatan yang dipertingkatkan, pertimbangkan untuk menggunakan (A.longitud - B.longitud)*111.12*cos(A.latitud) atau (A.longitud - B.longitud)*111.12*cos( B.latitud) bukannya (A.longitud - B.longitud)*111.12 dalam persamaan.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Mata Data Dalam Jejari Penanda Bertindih daripada Pangkalan Data Geospatial?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!