Mysql
 sql >> Base de données >  >> RDS >> Mysql

La fonction Mysql MBRContains n'est pas précise

Je n'ai pas de MySQL pour jouer avec en ce moment. J'essaie donc d'abord de dupliquer votre requête dans un 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

Et le résultat est ce à quoi vous pouvez vous attendre :

contain      distance
0   |   0.005489581062607675

En voici la raison :

J'utilise STContains ne contient pas MBRContient en fonction de votre description de ce que vous recherchez. La fonction MBRContains crée d'abord un rectangle de délimitation minimal sur votre polygone et utilise cette nouvelle entité de polygone pour le jugement de contenu. Dans votre exemple, le point tombe dans le MBR de votre polygone, c'est pourquoi votre résultat MySQL n'est pas ce que vous attendez. Et STContains est la bonne fonction que vous recherchez.

Référence officielle :Mysql spatial Link