Mencari Titik Dalam Bulatan Menggunakan Sambungan Ruang MySQL
Dalam senario di mana lokasi pengguna ditentukan melalui latitud dan longitud, tugas biasa ialah untuk mendapatkan semula bendera berdekatan dalam radius tertentu. Menggunakan sambungan spatial MySQL, adalah mungkin untuk melakukan pertanyaan kedekatan pada data geospatial.
Fungsi Spatial untuk Pertanyaan Bulatan
Sementara MySQL pada mulanya tidak mempunyai fungsi spatial untuk pengiraan jarak latitud/longitud , keluaran MySQL 5.7 memperkenalkan sokongan geospatial untuk sedemikian pengiraan. Untuk pertanyaan kehampiran bulat, fungsi ST_Distance_Sphere boleh digunakan.
SELECT * FROM flags WHERE ST_Distance_Sphere(coordinates, ST_GeomFromText('POINT(latpoint longpoint)')) < 100;
Dalam pertanyaan ini, koordinat mewakili lajur yang mengandungi titik geospatial, manakala titik lat dan titik panjang ialah nilai latitud dan longitud lokasi pengguna. Jejari bulatan dinyatakan dalam meter.
Pendekatan Alternatif
Sebelum MySQL 5.7, pengguna boleh menggunakan pendekatan alternatif:
Contoh Penggunaan
Andaikan jadual 'bendera' dengan 'koordinat' sebagai geometri lajur titik, pertanyaan berikut mendapatkan semula semua bendera dalam jarak 100m dari pengguna lokasi:
SELECT * FROM flags WHERE ST_Distance_Sphere(coordinates, ST_GeomFromText('POINT(42.81 -70.81)')) < 100;
Kesimpulan
Pelanjutan spatial MySQL menyediakan alatan berkuasa untuk pertanyaan kedekatan yang cekap pada data geospatial, termasuk keupayaan untuk mencari titik dalam bulatan berdasarkan latitud dan kedudukan longitud.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Mata Dengan Cekap dalam Bulatan Menggunakan Sambungan Ruang MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!