2014-04-07 100 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