我需要找到用户搜索位置中包含的所有属性; 一个位置可以是一个城市,县等.每个属性都有一个lat和long,可以用来在MySQL中创建一个POINT.位置是GEOMETRY类型,大多数是POLYGON和MULTIPOLYGONS.经过一周的搜索和故障排除后,我似乎无法让DB给我一个匹配.这就是场景.
SET @area = (SELECT area.polygon from area where area.city = 'Charlotte' and area.type = 'city');
SET @property = (SELECT property.point from property where id = 397315);
SELECT st_contains(@area, @property);
Run Code Online (Sandbox Code Playgroud)
@area获得夏洛特的POLYGON.
@property得到了一个属性的POINT,我100%肯定是在Charlotte里面或者POLYGON里面.我甚至用外部工具测试它以进行健全性检查.
每次都ST_CONTAINS返回0!无论我做什么,它始终是0.
我尝试使用ST_WITHIN失败.然后我确保SRID是相同的.首先两个都没有设置在4328,然后我将它们设置为0,再没有.我为多边形和点添加了空间索引,但仍然没有.
这是我要匹配的POINT POINT (35.086449 -80.741455).
为了完整性检查,我运行了这个查询:
select st_contains(
ST_GeomFromText('POLYGON (( 322 322, 322 513, 528 513, 528 322, 322 322 ))'),
ST_GeomFromText('POINT (418 411)'));
Run Code Online (Sandbox Code Playgroud)
这导致1匹配!
我到底失去了什么?谢谢.