簡體   English   中英

MySQL空間查詢始終為空

[英]MySQL spatial query always empty

我使用空間索引將地理坐標存儲在MySQL表中。 問題是我想知道元組/位置是否在邊界框內的查詢(由5個坐標描述的閉合多邊形;第一個最后一個坐標相同)返回空結果。 這是一個對我不起作用的最小示例:

CREATE TABLE osTest(
 loc Point NOT NULL
) ENGINE=MyISAM;

CREATE SPATIAL INDEX locIndex ON osTest(loc);

-- New York Central Park, The Great Lawn
INSERT INTO osTest (loc) VALUES (POINT(40.781343, -73.966598));

如果我執行以下表掃描查詢:

SELECT AsText(loc), X(loc), Y(loc) FROM osTest;

一切似乎都正常-結果如下所示:

+-----------------------------+-----------+------------+
| AsText(loc)                 | X(loc)    | Y(loc)     |
+-----------------------------+-----------+------------+
| POINT(40.781343 -73.966598) | 40.781343 | -73.966598 |
+-----------------------------+-----------+------------+

但是,當我嘗試執行使用空間索引的查詢時,結果始終為空。 以下多邊形中的多邊形描述了整個中央公園:

SELECT AsText(loc), X(loc), Y(loc) FROM osTest WHERE WITHIN(loc, GeomFromText('POLYGON(40.800716 -73.958358, 40.796858 -73.949120, 40.764216 -73.973153, 40.768108 -73.981929, 40.800716 -73.958358)') );

我也嘗試過INTERSECTSOVERLAPS -相同的空結果集。 我在這里想念什么?

我不是mysql GIS方面的專家,但在筆者看來,這些要點必須是緯度,經度。 我的信念是,在mysql 5.6 GIS數據類型中也是如此。

根據那個理論; 在您的查詢中,y和x應該切換

我發現了問題。 我的SQL查詢有錯誤。 它不會導致語法錯誤,但顯然不能正常工作。 更具體地說,我必須添加其他括號。 我不得不改變:

GeomFromText('POLYGON(40.800716 -73.958358, ...)')

GeomFromText('POLYGON((40.800716 -73.958358, ...))')

當我搜索示例時,我只是忽略了它。 而且我沒有收到任何語法錯誤,或者沒有任何幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM