gpt4 book ai didi

mysql - Geo SQL 查找位置附近的点

转载 作者:行者123 更新时间:2023-11-29 06:27:50 24 4
gpt4 key购买 nike

我使用下面的 sql:

基于 http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL

SELECT * , 3956 *2 * ASIN( SQRT( POWER( SIN( (
- 36.8812573 - abs( stop_lat ) ) * pi( ) /180 /2 ) , 2 ) + COS( - 36.8812573 * pi( ) /180 ) * COS( abs( stop_lat ) * pi( ) /180 ) * POWER( SIN( ( 174.63832160000004 - stop_lon ) * pi( ) /180 /2 ) , 2 ) )
) AS distance
FROM stops
HAVING distance <100
LIMIT 0 , 30

查找在我当前经纬度半径范围内的停靠点。

我正在使用 GTFS 数据,架构如下。 (经纬度和最后两列)

01  7106    210 Victoria St     -36.8481990     174.7544900
0002 7108 220 Victoria St -36.8481710 174.7523800
0003 7110 36 College Hill -36.8485220 174.7485400
0004 7112 68 College Hill -36.8479760 174.7466700
0005 7114 2 Jervois Rd -36.8471670 174.7437800
0006 7116 90 Jervois Rd -36.8453760 174.7408300
0007 7118 160 Jervois Rd -36.8453250 174.7373100
0008 7120 206 Jervois Rd -36.8454990 174.7354500
0009 7122 270 Jervois Rd -36.8474010 174.7321400
0012 7121 203 Jervois Rd -36.8473770 174.7319200
0013 7119 165 Jervois Rd -36.8454100 174.7348400

表结构如下:

enter image description here

据我所知,查询应该会返回一些结果。然而事实并非如此。谁能告诉我我可能遗漏了什么?

*** 更新 ***********

我注意到我缺少临时输出表名称,所以我现在得到了一些结果。但是,它们从我所在位置 5000 距离开始。有什么想法吗?

更新的 SQL:

SELECT * , 3956 *2 * ASIN( SQRT( POWER( SIN( (
- 36.8812573 - abs( stop_lat ) ) * pi( ) /180 /2 ) , 2 ) + COS( - 36.8812573 * pi( ) /180 ) * COS( abs( stop_lat ) * pi( ) /180 ) * POWER( SIN( ( 174.63832160000004 - stop_lon ) * pi( ) /180 /2 ) , 2 ) )
) AS distance
FROM stops dest
HAVING distance <5100
ORDER BY distance
LIMIT 10

谢谢,

最佳答案

我怀疑这个公式是罪魁祸首。即使您从可靠的来源获取它并且在实现过程中没有出错,也可以例如成为单位混淆。

  • 出现错误:永远不需要absthe ‘haversine’ formula 中没有这样的东西.在第二种情况下,它不会改变任何东西,因为 cos 是偶数函数,但在第一种情况下,它会改变。

关于mysql - Geo SQL 查找位置附近的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872384/

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