5

问题来了,

已经对此进行了多次研究,但没有找到任何明确且解释清楚的解决方案。有些人在谈论类似st_distancest_within引用 mysql/mariadb 版本的函数,但这些函数似乎没有真正的文档,似乎不适合我的问题。

所以我想做的是:

获取所有空间点(lat,ln),这些空间点位于具有定义半径的圆内KILOMETRES

用户将给出一个半径,包含在 1 到 100 公里之间,并将接收该半径内的所有数据库记录。

points”表如下所示:

ID -- POINT -- SOMETEXT

Point 是使用的空间类型点mySql(>5.6) / mariaDb(5.5.40) (lat,lng)

因此,查询应如下所示:

"SELECT * FROM points WHERE (function... to get distance) <= definedDistance"

感谢帮助

4

1 回答 1

-1

我不同意你在这里写的:

有些人在谈论像 st_distance 或 st_within 这样引用 mysql/mariadb 版本的函数,但这些函数似乎没有真正的文档,似乎不适合我的问题。

st_distance记录在案,似乎非常适合您的问题。

看我的例子,我正在寻找半径为 1 的圆内的点,中心在 (2, 2):

CREATE TABLE geom (g GEOMETRY);

INSERT INTO geom VALUES (GeomFromText('POINT(1 1)'));
INSERT INTO geom VALUES (GeomFromText('POINT(1 2)'));
INSERT INTO geom VALUES (GeomFromText('POINT(1 3)'));
INSERT INTO geom VALUES (GeomFromText('POINT(1 4)'));
INSERT INTO geom VALUES (GeomFromText('POINT(2 2)'));
INSERT INTO geom VALUES (GeomFromText('POINT(3 3)'));
INSERT INTO geom VALUES (GeomFromText('POINT(4 4)'));

SELECT AsText(g) from geom where ST_Distance(point(2,2), g) <= 1

输出:

POINT(1 2)
POINT(2 2)
于 2015-10-03T10:28:41.470 回答