Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Dapatkan poligon mendekati lat,long di MySQL

Versi lambat (tanpa indeks spasial):

SELECT  *
FROM    mytable
WHERE   MBRIntersects(mypolygon, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))

Untuk memanfaatkan indeks spasial, Anda perlu mendenormalisasi tabel Anda sehingga setiap simpul poligon disimpan dalam catatannya sendiri.

Kemudian buat SPATIAL INDEX pada bidang yang berisi koordinat simpul dan hanya mengeluarkan kueri ini:

SELECT  DISTINCT polygon_id
FROM    vertices
WHERE   MBRContains(vertex, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))

Hal-hal akan jauh lebih mudah jika Anda menyimpan UTM koordinat di database Anda, bukan garis lintang dan garis bujur.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan antara prosedur, fungsi, dan rutinitas tersimpan?

  2. WEEK() Contoh – MySQL

  3. Ubah atau Setel Nilai Waktu Kueri Panjang MySQL untuk kueri log-lambat

  4. Permintaan untuk menemukan tabel yang dimodifikasi dalam satu jam terakhir

  5. Situs web multi bahasa praktik terbaik