2014-04-07 137 views
0

我在Debian 7 x86_64上使用MySQL 5.5.35服务器。我试图检查点是否在矩形内。我用的是Contains功能是这样的:包含MySQL函数 - 意外结果

SELECT Contains 
(
    Polygon 
    (
     Point(55.538322,37.332026), 
     Point(55.566347,37.875850), 
     Point(55.898002,37.873103), 
     Point(55.896459,37.381465), 
     Point(55.538322,37.332026) 
    ), 
    Point(55.737177,37.623164) 
) 

点是明显的矩形范围内,我期待得到1输出,但我所得到的是(NULL)

请你指点我的错误吗?谢谢!

更新:经过一番调试它出来的的NULL是由Polygon函数返回。这就是问题所在。

回答

1

阅读reference I'ver发现该Polygon函数需要它的参数是LineString型之后。正确的例子是:

SELECT 
Contains 
(
    Polygon 
    (
     LineString 
     (
      Point(55.538322,37.332026), 
      Point(55.566347,37.875850), 
      Point(55.898002,37.873103), 
      Point(55.896459,37.381465), 
      Point(55.538322,37.332026) 
     ) 
    ), 
    Point(55.737177,37.623164) 
) 
1

你可以试试这个sintax

SELECT 
MBRContains(
    GeomFromText('Polygon((55.538322 37.332026,55.566347 37.87585,55.898002 37.873103,55.896459 37.381465,55.538322 37.332026))'), 
    GeomFromText('Point(55.737177 37.623164)')); 
+0

谢谢你的回应。你所建议的语法对我有用。也许你知道我为什么不工作?谢谢! – Kolyunya

+0

真诚的我认为,对于空间关系,您需要使用精确的函数(MBRContains,而不仅仅是包含),就像在mysql dev站点上所解释的一样 http://dev.mysql.com/doc/refman/5.6/en/functions- for-testing-spatial-relations-between-geometric-objects.html 对于其余的我不知道为什么没有'GeomFromText'关键字不能工作,但我一直使用这个sintax从Mysql站点获取它。 – AlexF

+0

我发现了我的错误,并发布了可能对其他人有用的答案。 – Kolyunya