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

Fungsi Mysql MBRContains tidak akurat

Saya tidak memiliki MySQL untuk dimainkan sekarang. Jadi pertama-tama saya mencoba menduplikasi kueri Anda di SQL Server Spatial.

DECLARE @g1 geometry
DECLARE @h1 geometry
SET @g1= geometry::STGeomFromText('POLYGON((-74.05100448502202 4.7239278424321,-74.05092938316898 4.7241416902206,-74.04830618275201 4.7237460717602,-74.04643668306903 4.7234306460692,-74.04635688735101 4.7234105978214,-74.04636526925401 4.7233310730989,-74.046191260944 4.72327293317,-74.04579027069599 4.7232007594583,-74.04141290558402 4.7214258184083,-74.03746201170497 4.7197791822891,-74.03565688503801 4.7189879401666,-74.033484295736 4.7180897723398,-74.03098447693401 4.7170526009038,-74.028731840457 4.7161167561787,-74.02852820211899 4.7150714370973,-74.026398371001 4.6877232674918,-74.02558060109601 4.6874859863574,-74.02454587610401 4.686797564651,-74.024665108676 4.6863189291555,-74.025470986757 4.6857975214267,-74.02585246812498 4.6846813784365,-74.02580479605103 4.6834369175226,-74.01962984798399 4.684922743491,-74.028472839649 4.6765444849623,-74.032273278366 4.6775012677607,-74.03825980124901 4.6799297676049,-74.048215993474 4.6850422042295,-74.05718496514402 4.6867981911917,-74.05100448502202 4.7239278424321))', 4326);
SET @h1 = geometry::STGeomFromText('POINT(-74.051585 4.680108)', 4326)
SELECT @g1.STContains(@h1) contain, @g1.STDistance(@h1) distance

Dan hasilnya adalah apa yang Anda harapkan:

contain      distance
0   |   0.005489581062607675

Inilah alasan di balik ini:

Saya menggunakan STContains bukan MBRBerisi berdasarkan deskripsi Anda tentang apa yang Anda cari. Fungsi MBRContains pertama-tama buat Persegi Panjang Batas Minimal di atas poligon Anda, dan gunakan fitur poligon baru itu untuk melakukan penilaian berisi. Dalam contoh Anda, intinya jatuh ke dalam MBR poligon Anda sehingga itu sebabnya hasil MySQL Anda tidak seperti yang Anda harapkan. Dan STContains adalah fungsi yang tepat yang Anda cari.

Referensi resmi:Tautan spasial MySQL




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengakses elemen array

  2. Jalankan skrip SQL untuk membuat tabel dan baris

  3. SQL Memilih dari dua Tabel dengan gabungan dan batas dalam

  4. bagaimana saya bisa mendapatkan array id catatan yang baru saja dimasukkan?

  5. Instalasi Django mysqlclient