mysql - MYSQL求两点之间的距离。 (使用点数据类型)

标签 mysql database indexing point

假设我有一个这样的 2 列表:

| user_id      | int(11) | NO   | UNI | NULL    |                |
| utm          | point   | NO   | MUL | NULL    |                |

如您所见,它非常简单。 utm 是一种Point 数据类型。我这样插入:

INSERT INTO mytable(user_id, utm) VALUES(1, PointFromWKB(point(50, 50)));

然后,我创建一个空间索引。

ALTER TABLE mytable ...add spatial index on(utm) or something. (forgot)

好的,一切都很好。现在,我想选择 * where distance < 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)

顺便说一下,我曾尝试在没有 PointFromWKB 的情况下插入 INTO...但它没有用...这就是为什么有人向我建议使用 PointFromWKB。

最佳答案

已解决。这就是我所做的:

where GLength(LineStringFromWKB(LineString(asbinary(utm), asbinary(@mypoint)))) < 9999999999999;

关于mysql - MYSQL求两点之间的距离。 (使用点数据类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2270181/

相关文章:

php - MYSQL查询检查用户是否喜欢

MYSQL - 更新具有递增值的列,每次满足条件时都会重置

javascript - 从数组中删除空字符串,同时保留无循环记录?

algorithm - 快速点索引-(> 100.000.000)-in-polygon-(> 10.000)-test

sql - 向 gerrund 表添加索引

c# - 无法将 mysql 服务器连接到 Visual Studio

php - 使用php中的输入字段将表行数据提交到另一个表

php - 如何按 AM/PM 升序对存储为 varchar 数据类型的日期时间进行排序?

用点创建mysql数据库

where子句中的MySQL未知列?