Gor*_*ski 8 mysql spatial-query
我需要找到用户搜索位置中包含的所有属性; 一个位置可以是一个城市,县等.每个属性都有一个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匹配!
我到底失去了什么?谢谢.
尝试这个
SELECT MBRContains(POLYGON (( 322 322, 322 513, 528 513, 528 322, 322 322 )),
GeomFromText('Point(418 411)')) AS whatEver
Run Code Online (Sandbox Code Playgroud)
为我工作
| 归档时间: |
|
| 查看次数: |
1460 次 |
| 最近记录: |