gpt4 book ai didi

使用 haversine 公式查找附近位置的 MySql 空间数据查询

转载 作者:行者123 更新时间:2023-11-29 06:36:38 25 4
gpt4 key购买 nike

这里的新手对 mysql 有很好的了解,但在空间查询上卡住了。

我查看了许多与空间数据相关的问题,以找到给定纬度/经度周围的附近位置,但由于我的空间表格式不同,最终没有得到正确的结果(如果已经有问题,请提供链接。我不太了解空间数据查询)。

我有一个表,我们将纬度/经度存储为数据类型的几何类型。!(抱歉,如果我在这里错了)

desc 我的表如下:

+-----------+----------------+
| Field | Type |
+-----------+----------------+
| id | Int(10) |
| property | geometry |
+-----------+----------------+

当我使用 select astext(property) from mytable query 查询查看属性数据时,它将返回列表

POINT(10.1234 50.12356)

由于纬度和经度。

现在我有 haversine使用 mysql 计算最近位置的公式。

在给定的链接作者 Mr.Ollie 直接在纬度和经度列上查询,但在我的问题中,纬度和经度存储为 POINT 数据类型。

为了实现最近的位置

  • 我需要先从表中提取点并对其应用查询吗

(我试过 从 mytable 中选择 X(property),Y(property); 来获取纬度/经度值。)

  • 有没有其他方法可以直接在我的身上应用haversine公式
    表。?

我使用的是 MySql 服务器版本 5.5

请建议我如何去做。提前感谢大家。

查找单独的线程 here

最佳答案

在做了一些研究后以一些下降的 Haversine 查询结束

     select id, ( 3959 * acos( cos( radians(12.91841) ) * cos( radians( y(property) ) ) * 
cos( radians( x(property)) - radians(77.58631) ) + sin( radians(12.91841) ) *
sin( radians(y(property) ) ) ) ) AS distance from mytable having distance < 10 order by distance limit 10

;

请查看存储的 LATLON 存储在 mytable 中的纬度/经度是相反的。

关于使用 haversine 公式查找附近位置的 MySql 空间数据查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24243136/

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