


Bagaimana untuk Memilih Titik Dalam Bulatan Menggunakan Sambungan Ruang dan Latitud/Longitud MySQL?
Jan 06, 2025 pm 12:23 PMPelanjutan Spatial MySQL: Memilih Titik dalam Bulatan Berdasarkan Latitud/Longitud
Latar Belakang:
MySQL boleh menyimpan data geospatial menggunakan sambungan spatialnya. Ini membolehkan pertanyaan dan manipulasi yang cekap bagi objek spatial, termasuk titik, garisan dan poligon. Satu tugas biasa ialah memilih titik dalam jejari tertentu dari lokasi tertentu.
Menggunakan Sambungan Geospatial:
Untuk melaksanakan tugas ini, MySQL menyediakan beberapa fungsi geospatial, termasuk Penampan (), yang mewujudkan zon penampan di sekeliling titik atau garis. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa MySQL tidak menyokong pengiraan kedekatan secara asli berdasarkan latitud dan longitud.
Pendekatan Alternatif:
Untuk menentukan titik dalam bulatan berdasarkan latitud dan longitud, pendekatan yang berbeza diperlukan. Formula Jarak Bulatan Besar boleh digunakan untuk mengira jarak antara dua titik di permukaan Bumi. Ini boleh dimasukkan ke dalam pertanyaan MySQL untuk menapis titik dalam jejari tertentu.
Sampel Pertanyaan:
Pertanyaan berikut menunjukkan cara menggunakan formula Jarak Bulatan Besar untuk pilih bendera dalam radius 100 meter dari latitud dan longitud tertentu:
SELECT id, coordinates, name, r, units * DEGREES(ACOS(LEAST(1.0, COS(RADIANS(latpoint)) * COS(RADIANS(latitude)) * COS(RADIANS(longpoint) - RADIANS(longitude)) + SIN(RADIANS(latpoint)) * SIN(RADIANS(latitude))))) AS distance FROM flags JOIN ( SELECT 42.81 AS latpoint, -70.81 AS longpoint, 10.0 AS r, 69.0 AS units ) AS p ON (1=1) WHERE MbrContains(GeomFromText ( CONCAT('LINESTRING(', latpoint-(r/units),' ', longpoint-(r /(units* COS(RADIANS(latpoint)))), ',', latpoint+(r/units) ,' ', longpoint+(r /(units * COS(RADIANS(latpoint)))), ')')), coordinates)
Dalam pertanyaan ini, parameter titik lat dan titik panjang mewakili lokasi pengguna. Parameter r dan unit menentukan jejari (dalam meter) dan unit jarak setiap darjah latitud.
Pertimbangan Tambahan:
- Pertanyaan di atas mengira jarak menggunakan formula Jarak Bulatan Besar, yang lebih tepat daripada jarak Cartesian untuk latitud dan longitud.
- Untuk mengehadkan keputusan pada titik dalam bulatan, tambah klausa WHERE untuk menapis jarak yang kurang daripada atau sama dengan jejari.
- Susun hasil mengikut jarak untuk memaparkan bendera terdekat pertama.
- Pengindeksan ruang pada lajur koordinat boleh meningkatkan prestasi pertanyaan dengan ketara.
Dengan mengikuti pendekatan ini, anda boleh memilih titik dalam bulatan dengan berkesan berdasarkan latitud dan longitud, membolehkan anda mencipta aplikasi berasaskan lokasi menggunakan sambungan spatial MySQL.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Titik Dalam Bulatan Menggunakan Sambungan Ruang dan Latitud/Longitud MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?
