2015-08-17 61 views
0

我試着測試一條線是否在距離某個點的某個距離處被滿足。 St_distance只是給了我想要的東西。不過,我很好奇st_intersects + st_buffer:Mysql 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中的上述命令,它說這確實是真的!

回答

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的交點的 結果。

+0

謝謝@Ireeder。我想過要發佈一個錯誤報告,但不確定。很高興知道它完成了。 – cfchou