我正在使用空間索引在MySQL表中存儲地理座標。問題是,我想知道元組/位置是否在邊界框內(由5個座標描述的閉合多邊形;首先最後一個座標相同)的查詢返回空結果。這裏的預期是不是爲我工作的最小例如:MySQL空間查詢始終爲空
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)'));
我也試過INTERSECTS
,OVERLAPS
- 同樣的查詢結果爲空。我在這裏錯過了什麼?
MySQL對於座標的「本質」是不可知的,即它不必是緯度或經度。這包括只要訂單一致,訂單就不重要。我現在發現了這個問題:我的SQL查詢中有一個錯誤。看我一眼。 – Christian