sql >> Database >  >> RDS >> Mysql

Mysql-functie MBRContains is niet nauwkeurig

Ik heb momenteel geen MySQL om mee te spelen. Dus ik probeer eerst je query te dupliceren in een 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

En het resultaat is wat je mag verwachten:

contain      distance
0   |   0.005489581062607675

Hier is de reden hierachter:

Ik gebruik STContains niet MBRBevat op basis van uw beschrijving van wat u zoekt. MBRContains-functie maakt eerst een minimale begrenzende rechthoek over uw polygoon en gebruikt die nieuwe polygoonfunctie om het oordeel te bevatten. In uw voorbeeld valt het punt in de MBR van uw polygoon, dus daarom is uw MySQL-resultaat niet wat u verwacht. En STContains is de juiste functie die u zoekt.

Officiële referentie:Spatiële Mysql-link




  1. Lightswitch staat het toevoegen of wijzigen van records in MySQL niet toe

  2. Waarschuwing:de stap na de installatie is niet succesvol voltooid, bij het installeren van mysql met brew in Mac OS High Sierra

  3. Een uniqueidentifier-kolom toevoegen en de standaard toevoegen om een ​​nieuwe guid te genereren

  4. UTF-8 vs Latin1 mysql, indexen niet gebruikt op utf-8