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

mysql - 用于计算半正弦距离的 MySQL 函数

全部。

我想创建一个 mysql 函数来计算两个地理代码之间的半正弦距离。

但是我遇到了这样的错误;

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 '' 附近使用正确的语法

有人有想法吗?

先感谢您。

0 投票
3 回答
191 浏览

mysql - 使用交叉连接和 Hversine 公式在 MySQL 地理搜索中重复记录

我正在尝试完成此Google 教程的修改

我编写了这个 SQL 来使用位置“名称”查询位置表。给定位置的名称,查询返回附近的比萨餐​​厅。为了做到这一点,我交叉加入了我的餐厅位置表,标题为“标记”,并使用 Haversine 公式计算距离。

查询返回预期结果,但如果兴趣点在指定区域之外,在本例中为“默特尔海滩”,我每次匹配都会得到重复记录。这是因为 CROSS JOIN 很容易通过 DISTINCT 选择来修复。但是“lng”和“lat”字段是 FLOAT 类型,因此距离计算永远不会相同,即使对于重复记录也是如此。

这是回报的一个子集:

3901 North Kings Highway Suite 1, 默特尔比奇, SC | 芝加哥比萨公司以东| 33.716099 -78.855583 | 4.0285562196955125

1706 S Kings Hwy # A, 默特尔比奇, SC | 达美乐披萨:默特尔比奇 | 33.674881 | -78.905144 | 4.0285562196955125

82 Wentworth St, 查尔斯顿, SC | 安多利尼斯披萨 | 2.782330 | -79.934235 | 85.68177495224947

82 Wentworth St, 查尔斯顿, SC | 安多利尼斯披萨 | 32.782330 | -79.934235 | 89.71000040441085

114 Jungle Rd, 埃迪斯托岛, SC | Edisto Beach Inc 的雄鹿披萨 | 32.503971 -80.297951 | 114.22243529200529

114 Jungle Rd, 埃迪斯托岛, SC | Edisto Beach Inc 的雄鹿披萨 | 32.503971 -80.297951 | 118.2509427998286"

关于从这里去哪里有什么建议吗?

0 投票
1 回答
1171 浏览

matlab - 如何在 Matlab 中创建加权邻接矩阵

我有以下格式的数据集:

从这里我需要生成一个 LocID-LocID 无向图。为此,我需要以下格式的加权矩阵。

由于用户 u1 存在于位置 l1、l2 和 l3,因此我将它们视为图中的可见边。因此,存在从 l1 -> l2 和 l2-> l3 的边缘。从给定的示例中,存在 4 条边。

这里两个 LocID 之间的每条边的权重是根据给定的纬度和经度信息计算的。比如,d(l1,l2) = LocID-1 和 LocID-1 之间的距离 = (lt1,lg1) 和 (lt2,lg2) 之间的距离

距离计算可以通过使用半正弦公式来完成。所以,这不是问题。我需要在 matlab 中执行此任务。谁能帮帮我....提前谢谢....

0 投票
1 回答
173 浏览

php - 计算位置之间的距离

我使用 hasrshine 公式计算位置之间的距离。

它正常工作,但对于某些坐标值,它给出NAN.

它给出NAN的值是

0 投票
1 回答
1934 浏览

distance - Haversine vs Equirectangular 逼近

所以,我需要计算两点之间的距离(经纬对)。我在Movable Type Scripts中阅读了有关 Haversine 公式和 Equirectangular approximation 的内容。

由于我只想计算短距离(小于 4 公里),Equirectangular 公式是一个很好的近似值吗?

另外,我在 Google Developers 文档中阅读了 MySQL 数据库中的 lat-lon 存储,他们实现了像这样的 Haversine 公式:

我的最后一个问题是,过滤 sql 查询中的点(如示例中)和通过代码过滤它们之间是否存在很大的性能差异?

0 投票
1 回答
438 浏览

mysql - 根据MySQL中的半径合并边界框中的长/纬度点

这是我基本上想要实现的图片:

所以正如标题所说,我想合并长/纬度点,它们的半径(例如 25 公里)在长/纬度点的边界框内触摸。

这是我非常简单的数据库结构:

到目前为止,这是我的查询:

所以我的查询只是合并一个假想的边界框内的所有点,而不考虑半径。

我知道我可能不得不使用 Haversine 公式,但我在数学和 MySQL 方面很糟糕,这让事情变得有点困难。事实上,如果我只有一个半径,我最终可以合并点,但每个点都有自己的半径,我正在努力。

这是针对学生项目的,任何帮助都会非常感激。

参考:

-我对 SQL Fiddle 的查询:http ://sqlfiddle.com/#!2/3a42b/2 (在评论中包含一个用于 Haversine 公式的 SQL Fiddle 示例)

- MySQL 查询中的 Haversine 公式:(用于检查给定半径内的所有点)

0 投票
2 回答
2512 浏览

arduino-ide - Arduino上的Haversine公式实现

我正在使用 GPS 和 Arduino 创建地理围栏。我想实现Ha​​versine公式来找到两点之间的距离,以便用半径计算它。问题是我发现很难在 Arduino IDE 上实现 Haversine 公式,我是 Arduino 的初学者。

如何在 Arduino IDE 上实现上述公式?

0 投票
3 回答
218 浏览

javascript - Javascript Haversine 错误

因此,我使用 Haversine 公式继续查找从 Google 地图检索到的路线沿线的位置,如下所示,使用英里。

但是当它使用点(例如)36.64756、-97.34593(在威奇托、堪萨斯州和达拉斯之间的路径上)和 39.933321、-91.409415(在伊利诺伊州昆西的一个位置)时,我的距离不到 20 英里。显然这是不正确的。我无法用其他值复制错误 - 我偶然发生了这个。

这是toRad原型,顺便说一句-

我最初的猜测是某处的浮点溢出,但我无法使用 toFixed 隔离或缓解它。有人有想法么?

0 投票
3 回答
252 浏览

php - 在多个邮政编码 PHP 和 MySql 上按距离排序

嗨朋友我需要这个逻辑
问题定义的帮助:

有4张桌子:

  1. 项目
    • 项目名称
    • 项目编号
    • 邮政编码
  2. 小贩
    • 供应商 ID
    • 供应商名称
    • 电话
    • 服务区距离
  3. 供应商服务区
    • 供应商 ID
    • 服务区邮政编码
  4. 邮政编码详细信息
    • 邮政编码
    • 纬度
    • 经度
  • 每个项目都有一个邮政编码
  • 供应商可以有多个服务区邮政编码
  1. 当供应商登录时,我将获得供应商服务区域内的所有项目。

    例如:如果供应商在他的服务区有两个邮政编码 22032、10031,并且他的服务区距离是 20 英里,那么这些服务区内的所有项目都在 20 英里左右。

  2. 我正在计算项目邮政编码和供应商邮政编码之间的距离,并在列中显示最小距离

    例如:项目邮政编码 22032 和供应商邮政编码是 22031 和 22040:
    22032 到 22031 = 3.01 英里
    22032 到 22040 = 7.98 英里
    然后距离 = 3.01

问题:现在客户想要按距离排序

我的尝试:

  1. 我尝试使用 PHP 数组和对象来执行此操作,但使用大数据会减慢进程
  2. 我试图从MYSQL距离计算haversine公式计算它,但无法弄清楚
  3. 我试图在单独的表格中映射距离,但邮政编码太多

请提出任何可以花费更少时间的逻辑。

0 投票
1 回答
5375 浏览

java - Java中的Haversine公式产生不正确的结果

我正在尝试使用Haversine formula 在维基百科上给出的这个实现进行试验,但这个公式没有给出预期的结果。


上述经纬度格式在需求文档中指定。

示例输入坐标如下:

在将这些值传递给 Haversine 方法之前,我将这些值转换为度数格式。如果不需要此步骤,请纠正我。

我正在使用下面的公式将度数格式转换为十进制度数格式:

所以新坐标变成

调用 hasrsine 方法变得像

这是返回值5.932071604620887E-4

为了验证这些值,我向本网站(33.994144666666664, 83.9363, 33.99415, 83.9363)上的转换器提供了相同的输入,但它给出的结果为km。0.001

我试图在不转换为十进制度的情况下提供输入值,但是两种方法的输出也不匹配。

谁能告诉我我在这里犯了什么错误?