假設我有一個2列的表是這樣的:查找MYSQL中兩點之間的距離。 (使用點數據類型)
| user_id | int(11) | NO | UNI | NULL | |
| utm | point | NO | MUL | NULL | |
正如你所看到的,這是非常簡單的。 utm是點數據類型。我這樣插入:
INSERT INTO mytable(user_id, utm) VALUES(1, PointFromWKB(point(50, 50)));
然後,我創建一個空間索引。
ALTER TABLE mytable ...add spatial index on(utm) or something. (forgot)
好吧,一切都很好。現在,我想選擇*在哪裏距離< 99999. 但它不工作!
//This is supposed to select all where the distance is less than 99999999.
set @mypoint = PointFromWKB(point(20,20))
select * from mytable where GLength(LineString(utm, @mypoint)) < 9999999;
Empty set (0.00 sec)
select * from mytable where GLength(LineStringFromWKB(LineString(utm, @mypoint))) < 9999;
Empty set (0.00 sec)
順便說一句,我試圖INSERT INTO沒有PointFromWKB ...它沒有工作......這就是爲什麼有人建議PointFromWKB給我。
這是根據地理座標或平面座標計算距離嗎? – 2012-06-01 07:23:29