问题标签 [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 回答
2180 浏览

iphone - 计算指向 CLLocation 的罗盘航向 - 适用于 iOS 的 Haversine 函数

我了解如何获取 2 个 CLLocations 之间的距离。我需要确定从 CLLocation 到另一个 CLLocation 的广义罗盘方位(N、NE、E 等)。

在我用半正弦公式推导轴承之前,是否有一个普遍适用的开源库或代码片段,您发现使用或不使用半正弦可以解决这个问题?

谢谢!

0 投票
3 回答
5959 浏览

android - 两个位置之间的距离不对

我已经使用http://www.movable-type.co.uk/scripts/latlong.html上的算法来找到两点之间的距离。

我的两点是

根据Movable Type Script答案是 0.1812km

我的应用程序给出的结果 ( d) 为 0.230km

检查Haversine公式:http ://www.movable-type.co.uk/scripts/latlong.html

0 投票
1 回答
997 浏览

c - 球坐标转换的疑惑

我正在尝试将球坐标(即来自 GPS 设备的纬度和经度)转换为笛卡尔坐标。我正在遵循从极坐标转换方程得出的这个简单转换。

然后我正在计算应用欧几里得距离的两点之间的距离,但我找到的值并不总是与我可以使用hasrsine formula计算的距离相同。特别是我注意到给定不同的经度但相同的纬度会导致两种算法计算出的距离相同,而具有相同的经度和改变纬度会带来不同的值。

这是我正在使用的 C 代码:

我是在做不正确的事情还是背后有一些我没有看到的数学(也许在 Mathoverflow 板上问这个?)。更新没有必要跨板,因为有人正确指出这种转换对于计算两点之间的确切距离没有意义(两极之间的距离为零)。所以我将其重新表述为:为什么在纬度的小三角洲(0.0001,相当于或多或少 10 米),距离似乎与半正弦公式(20-25%)如此不同?

更新 2: 正如 Oli Charlesworth 指出的那样,不考虑z axis这种转换会使这种转换成为不介意南北差异的投影。这也是我指出的增量差异的原因。事实上,在正确的变换中,z 与纬度有关,如果考虑它,然后计算两点之间的欧几里得距离(现在在 3d 空间中),纬度和经度都将导致对小增量的良好近似. 例如,对于纬度,误差约为 1.41 米。

0 投票
1 回答
2053 浏览

sql - 在 Hibernate 中结合 NamedQuery 和 Criteria

我在 storefinder 应用程序中使用 Hibernate。对于 SQL 中的邻近搜索,我使用 hasrsine 公式。因为这是一个有点混乱的 SQL,我为此在我的 .hbm.xml 文件中创建了一个命名的 SQL 查询。

但我也有一个用户定义的过滤器(营业时间、分类等)。为此,我使用 Hibernate 标准以编程方式添加过滤器。

现在我有一个完美运行的 NamedQuery,它为我提供了某个点周围的所有位置,以及一个完美运行的标准查询,它根据某个过滤器为我提供了所有位置。

我的问题是:在 Hibernate 中结合这两种野兽的最佳方式是什么?(即,我需要满足某个过滤器的某个点周围的所有位置。)例如,有什么方法可以将 NamedQuery 用作条件搜索中的子查询?

0 投票
2 回答
1548 浏览

mysql - 地理位置和Haversine公式

我正在尝试创建一个基本的 Web 应用程序来检测用户的地理位置、查询 mySQL 数据库并返回 5 公里内的所有巴士站。

包含经度和纬度的 GTFS 提要已插入到 mySQL 数据库中,我找到了一个示例 HTML 页面,该页面提供了访问 Web 应用程序的浏览器的经度和纬度。

我正在寻求一些帮助来编写获取此信息并返回结果的 mySQL 查询。

0 投票
8 回答
11752 浏览

iphone - CLLocation 类别,用于计算带半正弦函数的轴承

我正在尝试为 CLLocation 编写一个类别,以将轴承返回到另一个 CLLocation。

我相信我在公式上做错了(计算不是我的强项)。返回的轴承始终处于关闭状态。

我一直在查看这个问题并尝试应用被接受为正确答案的更改及其引用的网页:

计算两个 CLLocationCoordinate2D 之间的方位

http://www.movable-type.co.uk/scripts/latlong.html

感谢您的任何指示。我已经尝试整合来自其他问题的反馈,但我仍然没有得到任何东西。

谢谢

这是我的类别-

----- CLLocation+Bearing.h

---------CLLocation+Bearing.m

0 投票
2 回答
240 浏览

.net - __CIasin 和 Arcsine 是否比 .NET 中的正弦慢得多?

我一直在对慢速代码区域进行一些 eprofile 测试。这适用于 Visual Studio 2008 和 .NET 2(已完全修补)。Haversine 公式使用了大约 32% 的计算。这需要两个正弦、两个余弦、一个平方根和一个反正弦 - 所有这些都使用标准的 .NET 数学库(即 Math.Sin、Math.Asin、Math.Sqrt)。我已经能够轻松地缓存余弦 - 导致 Haversine 函数的加速大约 25-30%。

在配置文件中,我看到 __CIasin_pentium4 和 __CIasin 除了人们发布的堆栈转储之类的内容外,它们在 Google 上都找不到太多内容。pentium4 变体抓取的样本数量大约是原来的两倍(包括和不包括在内)。我假设这是一个反正弦,但它真的比正弦贵得多吗?即使将计算两倍的数量,轮廓中也没有正弦的迹象。

这两个函数都是反正弦,还是一个是正弦?如果不是,它们代表什么?

是的,我在 Internet 和此处看到了有关快速正弦波的各种文章和帖子。我确实需要计算正弦的准确性,而不是查找表或截断的泰勒级数。我正在使用 Haversine 来计算和/或比较地球表面的距离。10m 精度(我的应用程序的最小恕我直言)相当于大约 1/640000 弧度。

一种关于速度的想法是多重化三角恒等式。虽然这会导致更多的三角函数,但它们将变得仅依赖于单个端点,因此变得可缓存。另一个是展开反正弦和平方根以进行比较。我认为后者有很大的改进空间,但是目前我正在尝试了解处理时间的原因以及 __CIasin 函数所代表的确切含义。

0 投票
3 回答
599 浏览

geolocation - 邮政编码距离范围公式。哪个公式是正确的?

我需要从一个邮政编码中找到一定范围内的所有邮政编码。我在数据库中有所有的邮政编码纬度/经度。

我在网上找到了两个略有不同的公式。哪一个是正确的?

公式1:

公式 2:(除以下内容外,与公式 1 相同:)

(第二个没有Math.toRadians)在获得最小/最大纬度/经度后,我打算使用 between 条件搜索数据库表。 哪个公式是正确的?

0 投票
3 回答
56579 浏览

transform - 如何将距离从度转换为米?

我正在使用带有普通墨卡托地图的 OpenLayers,我试图通过在 latlong 中找到一个点网格来对边界框进行采样。bbox 用 latlon 表示,例如

我可以以度为单位定义距离(例如x:2.5,y:2.4)并从那里计算出点。但是我想用来表示这个距离(例如 50000),以便将它与用户的心态联系起来(人们理解米,而不是度数)。我怎样才能转换这个距离?我知道如何重新投影一个点,但不是一个距离。

感谢您的任何提示!穆龙

0 投票
2 回答
1783 浏览

php - php附近的地方脚本帮助

我正在阅读http://code.google.com/apis/maps/articles/phpsqlsearch.html以获取 SQL/Math。我写了一个小 php 脚本,但我没有得到任何结果。

数据库结构和数据与谷歌代码文章中的相同。

那是我的 PHP 脚本。它出什么问题了?我认为这可能是一个 SQL 问题。不太确定。这篇文章来自 2008 年 1 月,所以也许事情发生了变化?