Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mencari Mata Dalam Bulatan Menggunakan Sambungan Ruang MySQL?

Bagaimanakah Saya Boleh Mencari Mata Dalam Bulatan Menggunakan Sambungan Ruang MySQL?

DDD
Lepaskan: 2025-01-06 12:27:41
asal
784 orang telah melayarinya

How Can I Find Points Within a Circle Using MySQL Spatial Extensions?

Mencari Titik dalam Bulatan Menggunakan Sambungan Ruang MySQL

Latar Belakang

Pelanjutan spatial MySQL membenarkan pengguna untuk memanipulasi dan menganalisis data spatial yang disimpan dalam pangkalan data MySQL. Satu tugas biasa ialah mengenal pasti titik yang terletak dalam bulatan tertentu. Senario ini sering ditemui dalam aplikasi seperti perkhidmatan berasaskan lokasi dan analisis geospatial.

Menggunakan Fungsi Jarak MySQL untuk Latitud dan Longitud

Maklumat Dihentikan:

Persoalan pada mulanya menyatakan bahawa sambungan spatial MySQL tidak menyokong pengiraan jarak latitud dan longitud. Walau bagaimanapun, maklumat ini sudah lapuk. Mulai MySQL 5.7, sambungan spatial menyokong pengiraan jarak Euclidean antara titik yang ditakrifkan menggunakan koordinat latitud dan longitud.

Contoh Pelaksanaan

Untuk memilih titik dalam bulatan menggunakan spatial MySQL sambungan, anda boleh menggunakan fungsi ST_Distance(). Fungsi ini mengira jarak antara dua titik dalam meter. Dengan mencipta bulatan maya di sekitar lokasi pengguna dengan jejari 100 meter dan menyemak sama ada jarak antara koordinat 'bendera' dan pusat bulatan berada dalam jejari ini, anda boleh menapis untuk titik dalam bulatan.

Berikut ialah contoh pertanyaan:

SELECT id, name, ST_Distance(coordinates, ST_PointFromGeoJSON('{ "type": "Point", "coordinates": [<user_longitude>, <user_latitude>] })) AS distance_in_meters
FROM flags
HAVING distance_in_meters <= 100
ORDER BY distance_in_meters ASC;
Salin selepas log masuk

Pertanyaan ini mendapatkan semula semua 'bendera' dalam jarak 100 meter bulatan jejari, disusun mengikut kedekatannya dengan lokasi pengguna.

Nota Tambahan:

  • Pastikan versi MySQL anda menyokong sambungan spatial dengan menyemak sama ada anda mempunyai item 'ruang' dalam keluaran SHOW VARIABLE.
  • Indeks ruang boleh meningkatkan prestasi pertanyaan dengan ketara untuk operasi spatial. Pertimbangkan untuk mencipta indeks spatial pada lajur 'koordinat'.
  • Untuk senario yang lebih kompleks yang melibatkan pengiraan jarak bukan Euclidean, anda mungkin perlu menggunakan alatan tambahan atau pustaka luaran yang menyokong pengiraan sfera.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Mata Dalam Bulatan Menggunakan Sambungan Ruang MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan