问题标签 [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 投票
1 回答
1447 浏览

c# - GeoCoordinate.GetDistanceTo 使用错误的地球半径?

我反编译了System.Device.Location.GeoCoordinate.GetDistanceTo(...),发现它使用Haversine公式,它应该指定地球的半径作为计算步骤之一。

反编译代码中指定的半径为6376500.0(米)。

在 MSDN 中,GetDistanceTo 的文档有一个注释:

Haversine 公式解释了地球的曲率,但假设地球是球形而不是椭球。

维基百科指出

将地球建模为球体的几种不同方法均产生 6,371 公里的平均半径

同样在我搜索的任何地方,我都找不到将半径指定为6,376.5公里的任何人。

因此,即使它们非常接近,GetDistanceTo使用6,376.5公里,但广泛接受的半径是6,371公里。为什么有区别?创造者是否GetDistanceTo找到了一种更好的方法来近似地球的半径?

0 投票
1 回答
101 浏览

php - 我在 php 中的 Haversine 计算哪里出错了?

我有 3 种方法,看起来几乎相同,但结果却不同......

它打印:

-----------------
浮动(0.6294055217761)
浮动(-1.3894367207592)
浮动(0.63022547745869 ) 浮动(-1.3883087144636)
浮动(0.00081995568258686)
浮动
(0)
-------- ----------
浮动(5223.9376537609)
-----------------
浮动(0.6294055217761)
浮动(-1.3894367207592)
浮动(0.63022547745869)
浮动(-1.3883087144636)
浮动(0.00081995568258697)
浮动(0)
-----------------
浮动(5223.9376537616)
-----------------
浮动(0.6294055217761)
浮动(-1.3894367207592)
浮动(0.63022547745869)
浮动(-1.3883087144636) 浮动(0.00081995568258697
)
浮动(0.0011280062955641)
-----------------
浮动(7811.4545246093)

第三个结果是正确的,但我不明白前两个有什么问题?

0 投票
0 回答
927 浏览

math - Haversine 公式 - 为什么是绝对值?

我正在尝试使用半正弦公式计算从纬度、经度的距离。出于某种原因,这只适用于北半球,我怀疑它是因为abs. 一旦我删除了绝对值,代码就可以正常工作。所以我只是想知道使用它的目的是什么?

0 投票
1 回答
253 浏览

php - Haversine 计算:显示集合内的用户

为我的本地社区构建一个基于 PHP 和 SQL 的拼车应用程序。虽然我通常使用 php 编码,但我很难寻找列出所需的数学公式:

  • 附近的前 5 个用户,根据主要用户的经度/纬度,从最近到最远排序
  • 仅限于主用户long/lat 500米范围内

SQL 数据库包含每 5 分钟更新一次的每个在线用户的经度/纬度。

已经四处寻找,但认为我可能正在寻找错误的东西。非常感谢任何指导。

0 投票
3 回答
1172 浏览

objective-c - “走出 100 米”哈弗辛公式

我对使用坐标很感兴趣,我想知道,如何以米为单位获得两点(坐标)之间的距离。经过长时间的搜索,我在这里找到了 Haversine 公式,以及它的 Objective-C 实现。

如下(我为自己修改了一点):

我的问题是:如何获得当前位置 100 米的距离(纬度和经度)?这个公式对我来说太复杂了,我看不懂,所以我不能“把它编码回来”来得到我想要的结果。

我只需要实际位置(巴黎、东京、伦敦、纽约等),以及纬度的(浮点数)和经度的(浮点数),其中(浮点数)表示距实际位置 100 米的距离。

如果您打开页面,您可以在此处“计算”两点之间的 100 米距离(“实际”和一个 100 米距离)。

例如:

Point1: 47.0, 19.0 Point2: 47.0, 19.0013190 --- 那是 0.1000 km (100 m) 的距离。

Point1: 47.0, 19.0 Point2: 47.0008995, 19.0 --- 也是 0.1000 km (100 m) 距离。

在这里你可以看到,在那个坐标(纬度 47.0 和经度 19.0)100 米的距离是 0.0008995(纬度)和 0.0013190(经度)。

我想在Haversine Formula的帮助下获得这些数据,只是不知道如何。

你能帮我弄清楚吗?

谢谢!

更新: 感谢您的回答,现在我没有时间尝试它们,但据我所知,我没有准确解释我想要什么。也许这是一个更好的例子,我想如何使用这些“100米”:

所以,现在我在坐标“lat x”和“lon y”。在另一个给定坐标“lat a”和“lon b”处还有另一个点(假设是一家酒店)。我的问题是:如果这家酒店距离我(小于)100 米,我该如何计算?所以没关系,如果只是5米还是99米,它们离我的距离都小于(或等于)100米。

使用我提供的代码,我可以计算出来,这就是那个公式的用途。

但是,假设我有一百万个其他坐标(酒店位置)要使用。我只需要一份清单,离我(不到)100 米的地方。所以是的,这是一个半径为 100 米的圆圈,我需要其中的结果。

把这些“百万”酒店的所有坐标一一计算出来需要花费更多的时间和资源,这就是为什么我认为计算出来会容易得多,经纬度有多少100米(改变我们在不同位置的值,这就是为什么我不能简单地使用我在上面的例子中计算出的那些)。因此,如果我想知道纬度和经度有多少 100 米,例如在伦敦的坐标(如果我在那里),我可以简单地获取距离我(小于)100 米的酒店列表,通过简单划分:

我只需要这些“100metersInLatitude”和“100metersInLongitude”,总是从“myLocation”计算。

哇,我希望,有人会理解我刚刚写下的内容,因为这对我来说并不容易,也不是...... :-)))

0 投票
2 回答
383 浏览

php - 用mysqli从haversine公式绑定距离参数

我正在开发一个网站,该网站将显示离特定位置最近的商店位置。我正在使用半正弦公式来确定距离,除了 XML 看不到我创建的距离字段外,一切正常。

distanceFromLocation 变量在进入 while 循环时始终为空。我已经测试了 SQL,它将返回正确的距离值。任何想法为什么我无法访问距离场?是因为它是一个计算字段吗?

0 投票
1 回答
2289 浏览

google-maps - 谷歌地图中两点之间的距离使用什么公式?

谷歌地图使用什么公式来计算 2 点之间的最短距离(具有它们的纬度、经度坐标)?API中的AFAIK有一种方法可以调用computeDistanceBetween ,但它是如何工作的?它纯粹基于Haversine吗?还是有什么不同?某处是否有可用的数学或代码实现参考?

更新
似乎谷歌可能使用大圆距离公式假设他们文档中的一个片段:

两点之间的距离是它们之间最短路径的长度。这条最短路径称为测地线。在一个球体上,所有测地线都是一个大圆的片段。

嗯,这很简单。这就像说每个平行线都等于赤道。或者,也许我全都错了。在我看来,这在测量从格陵兰到加拿大之间的距离时不应该正常工作,因为它们远离赤道。但是在谷歌中它无论如何都会给出正确的测量值,我不明白为什么以及如何。他们是否以某种方式修改了大圆公式?

0 投票
1 回答
46 浏览

mysql - SQL 元联接加上 Haversine 公式

我有一个查询,它将一些元数据连接到用户。

我现在想用它来使用 Haversine 公式搜索最近的距离。

我怎样才能合并为两个?

问候

0 投票
0 回答
182 浏览

mysql - MySQL 用户定义函数——Haversine 公式

我有以下代码:

这是计算两个坐标之间距离的半正弦公式。坐标存储在vb_postcodes具有以下属性的表中:code、lng 和 lat。当我尝试执行代码时,出现语法错误。

请原谅我的问题,这是我第一次制作用户定义的函数。

0 投票
1 回答
208 浏览

php - 如何根据距离搜索mysql

我有一个地址表“街道”、“城市”、“州”和“邮编”。

我可以使用 google maps API 拉出完整地址的网格,haversine 公式就足够了,但是我该如何根据它进行搜索呢?

例子。假设有人搜索“纽约市”,我该如何搜索最接近该纬度/经度的地址?我知道我需要将其转换为纬度/经度。

我应该添加另一个字段以便我可以将地址存储在纬度/经度中吗?如果是这样,我该怎么做才能根据距离进行搜索?