Cari latitud dan longitud terdekat menggunakan pertanyaan SQL
Apabila bekerja dengan data geospatial, anda selalunya perlu mendapatkan semula rekod berdasarkan jaraknya dari titik tertentu. Ini boleh dicapai dengan menggunakan pertanyaan SQL yang mengira jarak antara dua titik dan mendapatkan semula rekod yang berada dalam radius yang ditentukan.
Andaikan jadual pangkalan data mengandungi koordinat latitud dan longitud pelbagai lokasi. Untuk latitud dan longitud tertentu, kami ingin mendapatkan semula rekod dengan latitud dan longitud yang paling hampir. Walau bagaimanapun, jika jarak antara titik tertentu dan rekod yang diambil melebihi ambang yang ditetapkan, rekod itu tidak boleh diambil semula.
Untuk melakukan ini, kita boleh menggunakan pertanyaan SQL berikut:
<code class="language-sql">SELECT latitude, longitude, SQRT( POW(69.1 * (latitude - [startlat]), 2) + POW(69.1 * ([startlng] - longitude) * COS(latitude / 57.3), 2)) AS distance FROM TableName HAVING distance < 25 ORDER BY distance</code>
Dalam pertanyaan ini, [startlat]
dan [startlng]
mewakili latitud dan longitud bagi titik tertentu. Lajur distance
menggunakan formula Haversine untuk mengira jarak antara titik tertentu dan setiap rekod dalam jadual. Klausa HAVING
menapis rekod yang jaraknya melebihi 25 (ambang yang ditentukan). Akhir sekali, klausa ORDER BY
mengisih hasil mengikut jarak, mengembalikan rekod dengan latitud dan longitud terdekat terlebih dahulu.
Pertanyaan ini membolehkan mendapatkan semula lokasi berdekatan dengan cekap, memastikan hasil yang dikembalikan berada dalam julat jarak yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Latitud dan Longitud Terdekat dalam Radius Diberi Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!