检查两条路线(以纬度和经度表示)是不是彼此相对

Posted

技术标签:

【中文标题】检查两条路线(以纬度和经度表示)是不是彼此相对【英文标题】:Checking if two routes (expressed in latitude and longitude) are opposing each other检查两条路线(以纬度和经度表示)是否彼此相对 【发布时间】:2019-08-12 03:26:17 【问题描述】:

我一直在用这个搞砸我的头。 我有两条路线:

路线 1

起点:

纬度:44.426767 液化天然气:26.102538

终点:

纬度:45.031428 液化天然气:23.268939

路线 2

起点:

纬度:45.095770 液化天然气:24.362799

终点:

纬度:44.857492 液化天然气:24.881478

现在,我知道这两条路线是相互对立的(如果我在地图上绘制它们),但我不太清楚如何用数学方法来说明这一点。 我试过研究数学向量,但我不知道如何通过纬度和经度坐标来表达向量。

如果您能给我一个正确的方向,我将不胜感激,谢谢!

PS:我需要用php写公式。

【问题讨论】:

将纬度/经度视为 X/Y。那么它有什么不同呢? (请记住,您在这里使用的是球体,因此您可能想要处理一些“环绕”案例......)。另外:您需要定义“反对”;我很确定您不想要一个精确(数学)180 度对立,而是一些“余量”。 @RobIII 很好,可以工作,但考虑到地球是一个球体,我认为这会有点不同,我必须考虑到这一点(我认为) 这取决于您的要求,但是,是的,您可能需要考虑到这一点。然后,您需要将其添加到您的要求中。 【参考方案1】:

使用@matri70boss 链接将您的纬度/经度转换为 X/Y 向量,然后从 A (xA, yA) 到 B (xB, yB) 的 2 条路线分别对应一个向量 v (xB-xA, yB-是的)。

因此,您的 2 条路线有 2 个向量 v1 和 v2。如果你在它们之间做标量乘积,乘积的符号会告诉你它们是否指向相同的方向(如果为正:相同方向,负:相反方向,=0:垂直)。

【讨论】:

【参考方案2】:

您可以使用类似https://gis.stackexchange.com/questions/79633/how-to-determine-vector-between-two-lat-lon-points 的东西来计算它,然后进行比较。

【讨论】:

以上是关于检查两条路线(以纬度和经度表示)是不是彼此相对的主要内容,如果未能解决你的问题,请参考以下文章

在路线中以固定时间间隔确定中间纬度/经度

在实时纬度和经度之间绘制路线

使用数据库中的多个纬度和经度值在 Google 地图上标记路线

Strava - 具有纬度、经度和时间的团体路线接近度

如何使用 Google API 查找航点上的纬度和经度

使用谷歌地图v3验证两点(纬度或地址)服务器端之间的路线距离