Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Mata Data Dalam Jejari Penanda Bertindih daripada Pangkalan Data Geospatial?

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

Patricia Arquette
Patricia Arquetteasal
2024-10-30 09:48:27200semak imbas

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)

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

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!

Kenyataan:
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