问题标签 [haversine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
819 浏览

sql-server - 查找与其他用户 Sql Server 2005 的距离的问题 - Haversine

我有一张用户表,我需要根据 lat、long 找到最近的用户。我也需要距离。两天来我一直在努力使用haversine公式和替代方案,但我遇到了一些错误。

假设我用 lat, long 表示马来西亚吉隆坡(大约 3.2, 102)。

使用毕达哥拉斯:

它给了我“正确”的结果(接近那个点的用户)。但我无法得到距离(以公里为单位),我知道这并不完全正确。所以我尝试使用haversine:

奇怪的是,这给了我其他地方的用户。实际上,前 1 个结果是加纳的用户,其 lat=5.55 和 long=-0.20。

这让我发疯......我当然可以通过将毕达哥拉斯结果乘以 110 公里来计算近似距离,但我想要更正确的结果。

我希望有人能指出什么是错的。

请不要发布指向haversine公式等不同实现的链接。我已经看了两天了。

0 投票
4 回答
2782 浏览

sql - 不使用三角函数的 SQL 距离查询

我有一个不支持三角函数的 SQLite 数据库。与第二个 lat,lng 对相比,我想按距离对表中的一组 lat,lng 对进行排序。我熟悉按距离对 lat、lng 对进行排序的标准半正弦距离公式。

在这种情况下,我并不特别关心精度,我的点之间的距离很远,所以我不介意通过将曲线视为直线来四舍五入距离。

我的问题,这种查询是否有一个普遍接受的公式?记住没有三角函数!

0 投票
3 回答
2607 浏览

iphone - 如何在 iPhone 中使用 Haversine 公式计算两地之间的距离?

我想使用 Haversine 公式计算两个地方之间的距离。实际上我有两个地方的纬度和经度值。现在我想使用 Haversine 公式计算这些地方之间的距离。

例如:

现在我想使用Haversine Formula计算距离。

请帮帮我。谢谢!

0 投票
2 回答
5854 浏览

php - 在 PostgreSQL 和 PDO 中使用 Haversine 公式

在我的网站上,我正在尝试获取附近的位置。

我正在尝试为此使用Haversine 公式。

我正在使用以下查询来获取 25 公里半径内的所有位置。

但是我认为某些功能可能只是 MySQL,因为我收到以下错误:

警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42883]: Undefined function: 7 ERROR: function radians(text) does not exist LINE 1: ...id, ( 6371 * acos( cos( radians( 51.8391) ) * cos( radians( l... ^ 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。在 ...

或者也许这与我必须更改lat查询中的文本有关。但我不知道它应该是什么。

51.8391 和 4.6265 是我的“起点”点的经纬度。

非常感谢任何帮助,因为我不知道要改变什么:-)

编辑

看起来问题出在我尝试做的地方:radians(lat).

lat 是我表中的一列。

当我尝试使用rad()hakre 建议时,错误更改为:function rad(numeric) does not exist

编辑 2

现在我们正在取得进展。

确实设置为文本的列的数据类型(如 mu 所建议的那样太短)。

我已将其更改为双精度。

但是现在我得到另一个错误:

警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42703]: Undefined column: 7 ERROR: column "distance" does not exist LINE 1: ...adians( lat ) ) ) AS distance from stores HAVING距离 <... ^ 在 ...

但我以为我在选择中做了一个别名。有任何想法吗?

另外,如果你们认为这应该进入另一个问题,请告诉我,我会关闭这个问题。

0 投票
2 回答
4255 浏览

sql - Haversine 查询到 Oracle

我目前必须检查我的查询并将它们转移到使用 Oracle 而不是 SQLSERVER 并且我有点卡住了我从这里使用的这个查询

现在我知道这是一个可怕的查询,但 Oracle 似乎有很多问题。

首先它不喜欢Ein6371E和所有后续E

其次,它不喜欢这个square功能,所以我决定使用这个power功能,但这仍然给了我错误。

第三,它不喜欢这个radians功能

第四,它不喜欢这个TOP 1部分,所以我将其更改为ROWNUMWHERE子句中使用

我完全不知道在这里做什么。

关于我可以做些什么来让它发挥作用的任何想法?

提前致谢

0 投票
4 回答
6393 浏览

android - 查找两个地理点之间距离的源代码

我正在开发一个 Android 应用程序,我想添加商店定位器详细信息和地图视图。我搜索了很多。但我没有得到任何有目的的东西。我很紧张,非常需要你的帮助。

问题是,我想求2个坐标之间的距离,我得到了一个Haversine公式。,但是不知道如何成功运行程序。,由于我是Android初学者,请帮忙做逐步编码。,即xml代码也是..,请。,请。,

0 投票
1 回答
760 浏览

java - Solr 3.4 Geodist 功能,不正确/或不需要的结果

我在使用 Solr 3.4 时遇到问题,我正在使用它的空间搜索功能,例如 Geodist 和 Geofilt。一切似乎都很好,结果返回应该是按给定中心点的距离排序的。

然而,由于 Solr 3.4 缺乏返回函数结果的能力,因此我不得不手动计算它(在这种情况下通过 PHP)。

我阅读了文档,geodist 应该是一个实现2 lat/lng 点之间地理距离的半正弦函数的函数。我将该函数移植到 PHP(很简单!),并确保它给出正确的结果。

问题是:Solr 用我找不到的不同公式计算距离。因此,当我在 PHP 中重新计算距离时,它会导致数据距离不一致(例如 132 英里而不是 83 英里),这不是我可以容忍的差异。

我的解决方案:我说好的,创建一个函数比较很方便,看看我是否在我的数据端口中犯了错误,我挖掘了Solr 代码并提取了 hassine in 的文字实现,org.apache.solr.search.function.distance.HaversineConstFunction结果几乎相同。并制作了这个测试脚本(完整的源代码和数据)

我的结论是 Solr(或 Lucene)不使用 hasrsine 作为 geodist 实现。但我不知道是哪个方程。

更新错误已解决。我认为我的测试走得太远了。错误的结果是由于错误的参数命名而发生的,我使用(order来自 SQL 的那个)而不是sort(Solr 约定)来更改来自 Solr Web 服务的结果的顺序。

0 投票
2 回答
2890 浏览

gps - GPS距离计算

我想计算两个 GPS 位置之间的距离,每个位置都有一个纬度值和一个经度值。对于短距离结果,计算应该是准确的。例如。< 300 米。如果我使用 Google 地球(请参阅我的代码中的坐标),距离约为 136m。如果我使用文章提供的解决方案:http ://www.movable-type.co.uk/scripts/latlong.html (haversine 公式),结果与此相差无几。

使用的代码:

我敢肯定它应该是一些小的变化,但我看不到它。

0 投票
2 回答
1510 浏览

python - 用于足迹的纬度/经度的 Python 排序字典

我正在计算椭圆体表面上的卫星覆盖范围,我的函数返回一个纬度/经度列表,如下所示。它是一个 python 字典列表。现在,如果我在 Matlab 或 Matplotlib 中散点图,我会得到一个很好的断开点的 3D 足迹。但是,我希望能够使用 plot(不是 scatter)命令来创建一个平滑的 3D 圆来表示足迹。为了做到这一点,我需要以某种方式对它们进行排序。我已经尝试过Haversine(最大圆距离)来为每个点找到最近的邻居,但是当我有一组更大的值(GEO sats)时,这仍然会给我偶尔断开的线。当足迹跨越赤道时,我还尝试将值拆分为 N 和 S 纬度,然后按经度排序。一世'

0 投票
3 回答
3059 浏览

sql - 给定纬度/经度的基于距离的 JOIN

给定下表:

如何构建一个高效的 T-SQL 查询,将 A 中的每一行与 B 中最近的行相关联?

ResultSet 应该包含 A 中的所有行,并将它们与 B 中的 1 个且只有 1 个元素相关联。我正在寻找的格式如下:

我有一个函数可以计算给定 2 对纬度和经度的距离。我尝试了一些使用order by ... limit 1和/或的东西,rank() over (partition by ...) as rowCount ... where rowCount = 1但结果要么不是我真正需要的,要么需要很长时间才能返回。

我错过了什么吗?