Найдите расстояние между двумя точками в MySQL. (использование Типа данных Точки)

Предположим, что у меня есть таблица на 2 столбца как это:

| 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 мне.

7
задан TIMEX 16 February 2010 в 01:53
поделиться