MySQL-提供给函数st_within的GIS数据无效

时间:2019-03-01 18:59:53

标签: mysql-5.7 spatial-query

我有一个表格,其中的几何图形列(多边形和多面)使用srid 4326。

我想检查一个几何图形是否包含在另一个几何图形中。我有以下sql:

SELECT t2.name 
FROM location_boundries t1
INNER JOIN location_boundries t2 ON  ST_Contains(t1.geom, t2.geom) 
AND t1.name = 'East Midlands' 

但是我遇到以下错误:

Invalid GIS data provided to function st_within.

我什至开始麻烦解决这个问题?有什么想法我做错了吗?

*更新*

进行一些测试后,我发现一些异常行为。请在下面。

当我如下选择一条记录时,会引发上述错误,但是如果我包含多条记录,则没有错误。因此,如何执行查询似乎有些问题。

SELECT t2.name 
FROM location_boundries t1
INNER JOIN (select * from location_boundries where id in (2656044) ) t2 ON  
ST_Contains(t1.geom, t2.geom) 
AND  t1.name = 'East Midlands' 

现在包含ID为2656044的同一条记录如下,这次没有错误吗?

SELECT t2.name 
FROM location_boundries t1
INNER JOIN (select * from location_boundries where id in (2656044, 11609027, 11609030) ) t2 ON  
ST_Contains(t1.geom, t2.geom) 
AND  t1.name = 'East Midlands' 

仅当我限制子查询中的一条记录而不管它在哪条记录上时,这种情况才会发生。

0 个答案:

没有答案