Mysql st_intersects + st_buffer不起作用

时间:2015-08-17 04:53:31

标签: mysql gis geospatial spatial

我试图测试是否在距离某点一定距离内遇到了一条线。 St_distance只是给了我想要的东西。但是,我很好奇st_intersects + st_buffer:

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.24, for Linux (x86_64) using  EditLine wrapper


mysql> set @l4=st_geomfromtext('LINESTRING(50 50, 52 45)');
mysql> set @g4=st_geomfromtext('POINT(50 49)');
mysql> select st_distance(@l4, @g4);
--------------
select st_distance(@l4, @g4)
--------------

+-----------------------+
| st_distance(@l4, @g4) |
+-----------------------+
|    0.3713906763541037 |
+-----------------------+
1 row in set (0.00 sec)

我认为这一点非常接近线,但显然MySQL不同意:

mysql> select st_intersects(st_buffer(@g4, 1), @l4);                                                                                                              
--------------
select st_intersects(st_buffer(@g4, 1), @l4)
--------------

+---------------------------------------+
| st_intersects(st_buffer(@g4, 1), @l4) |
+---------------------------------------+
|                                     0 |
+---------------------------------------+
1 row in set (0.00 sec)

为什么呢?我想念一下吗?

P.S。 我在H2GIS上尝试了上面的命令,它说它确实是真的!

1 个答案:

答案 0 :(得分:0)

在这种情况下,ST_Intersects应该返回true。

这似乎是此处报告的错误:https://bugs.mysql.com/bug.php?id=71076,并在MySQL 5.7.6中修复,根据此处的发行说明:http://forums.mysql.com/read.php?3,629183,629183

“这项工作也纠正了[...]和那些问题        ST_Intersects()有时会错误地计算出来        LineString和Polygon交叉的结果。“