gpt4 book ai didi

mysql - 使用 mariaDb、mySQL 获取以公里为单位的半径内的所有空间类型点

转载 作者:行者123 更新时间:2023-11-29 01:03:00 25 4
gpt4 key购买 nike

问题来了

已经对此进行了多项研究,但没有找到任何明确且解释清楚的解决方案。有些人在谈论诸如 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"

感谢帮助

最佳答案

我不同意你在这里写的内容:

Some people are talking about functions like st_distance or st_within which refer to mysql/mariadb versions but these functions seem to have no real documentation and do not seem to fit my problem.

st_distancedocumented并且似乎非常适合您的问题。

参见我的示例,我在其中寻找半径为 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)

关于mysql - 使用 mariaDb、mySQL 获取以公里为单位的半径内的所有空间类型点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28021577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com