首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Haversine公式的麻烦

使用Haversine公式的麻烦
EN

Stack Overflow用户
提问于 2013-05-02 02:56:29
回答 1查看 214关注 0票数 1

我正在尝试使用Haversine公式来定位距我目前位置1英里以内的所有公交车站。我有一个MySQL DB表,该表包含5500个公交站点的纬度/经度位置,并且正在使用以下SQL:

代码语言:javascript
复制
"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是DB表的名称。

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

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

我使用的位置的拉长是37.865971,-122.283775。

我是用Java程序来做这个的。程序运行成功,但我的ResultSet返回空,即使我确信有50+巴士站在一英里内的位置被输入。

我哪里出问题了?

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

编辑解决了的(见下面的答案)

EN

回答 1

Stack Overflow用户

发布于 2013-05-02 03:22:42

这句话:

代码语言:javascript
复制
sin( radians(37) )

不够精确。改为:

代码语言:javascript
复制
sin( radians(37.865971) )

给出了预期的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16329620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档