gpt4 book ai didi

java - 使用 Haversine 公式时遇到问题

转载 作者:行者123 更新时间:2023-11-29 00:31:26 24 4
gpt4 key购买 nike

我正在尝试使用 Haversine 公式来定位距离我当前位置 1 英里以内的所有公交车站。我有一个 MySQL 数据库表,其中包含 5500 个公交车站的纬度/经度位置,并且正在使用以下 SQL 查询:

"SELECT id, 
( 3959 * acos( cos( radians(37.865971) ) * cos( radians( stopLat ) ) * cos( radians( stopLon ) - radians(-122.283775) ) + sin( radians(37) ) * sin( radians( stopLat ) ) ) )
AS distance FROM stops HAVING distance < 1 ORDER BY distance";`"

stops 是数据库表的名称。

stopLat 是列出纬度的列的名称。

stopLon 是列出经度的列的名称。

我使用的位置的纬度/经度是 37.865971,-122.283775。

我正在通过 Java 程序执行此操作。程序运行成功,但是我的 ResultSet 来了尽管我确定在输入位置的一英里范围内有 50 多个公交车站,但后面是空的。

我哪里错了?

编辑: 我注意到,当我将 1 更改为任何超过 500 的值时,它会返回整个结果集。此外,它告诉我它们都在 497-480 英里之外,这表明问题(正如我所怀疑的)在数学中,即在语句本身中。

编辑 - 已解决(请参阅下面我自己的回答)

最佳答案

这个表达式:

sin( radians(37) )

不够准确。将其更改为:

sin( radians(37.865971) )

给出了预期的结果。

关于java - 使用 Haversine 公式时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329620/

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