【发布时间】:2013-04-18 22:24:02
【问题描述】:
我的 mySQL 空间函数有问题。我的目标是找出一个 LINESTRING 对象是否正在通过一个 POLYGON 对象。为了确定我尝试使用两个 LINESTRING 对象来确定它们是否交叉。
SET @ls='LINESTRING (0 0, 1 1, 2 2, 3 3)'; -- original linestring
SET @lp='LINESTRING (0 1, 1 2, 2 3, 3 4)'; -- parallel linestring
SET @lx='LINESTRING (0 3, 1 2, 2 1, 3 0)'; -- crossed linestring
我已经尝试了几个功能来达到我的目标:
SELECT crosses(GeomFromText(@ls), GeomFromText(@lx)); -- crossing linestrings
returns 0;
SELECT intersects(GeomFromText(@ls), GeomFromText(@lp)); -- parallel linestrings
returns 1;
SELECT overlaps(GeomFromText(@ls), GeomFromText(@lp)); -- parallel linestrings
returns 1;
我知道这是边界比较或某事的问题,但有没有办法(或功能,或简单的解决方案)如何达到我的目标?其他可能性是检查 LINESTRING 中的点是否在多边形内,但我想知道是否有其他方法可以做到这一点?
不幸的是,MySQL Great Circle intersection (do two roads cross?) 中提供的解决方案对我没有帮助..
【问题讨论】: