【发布时间】:2013-11-08 06:26:50
【问题描述】:
我正在创建一个 java 应用程序,它可以为车辆在其路线的下一站提供预计到达时间 (eta)。 车辆发送它的当前位置(纬度和经度)和它所遵循的路线。 路线是一条折线,它的终点是沿该路线的站点。每个站点由一个地理点(纬度,经度对)表示。 此外,路线来自一组已知路线,即沿路线的每个站点的位置(纬度,经度)是已知的。 我想确定车辆沿途下一站的 eta。 我已经预先计算了从停靠点 A 沿路线移动到停靠点 B 所需的时间。(例如,考虑巴士路线)。 所以,一旦我得到当前位置,(它可能是一个停止位置或沿路线的两个停止点之间的某个位置) 我可以找出从当前位置到下一站的距离。从那个距离我可以计算出到 通过添加预先计算的停靠时间,到达下一个停靠点,从而到达路线上的所有其他停靠点。现在,我的问题是
如何判断车载传输的当前位置(经纬度)是否真的在路线沿线。
-
如果1)为真,如何判断当前位置在路线的哪两个停靠点之间(这样我可以计算当前位置到下一个停靠点的距离)
李>
如果它是笛卡尔坐标系,则很容易确定一个点是否位于由两个端点连接的线上。 如何为地理点(纬度,经度对)执行此操作。我在网上搜索过,有计算距离的方法 两个地理点,但没有找到任何方法来确定一个地理点是否位于两个地理点之间的线上
【问题讨论】:
-
我将您的问题解释为正方形表面上的一条线,您的意思是沿着大圆?因为如果它可以是任何圆圈,那么答案将永远是肯定的。
-
如果您有计算两点之间距离的公式,那么判断点 V 是否在点 A 和 B 之间的一种方法是将 A 到 V 的距离和 V 的距离相加到 B。如果结果与从 A 到 B 的距离相同,那么你得到了一条直线(或者至少是一个大圆的一部分)。
-
(错字,在我的评论中,我指的是球体,而不是正方形)
-
@MrBackend。是的。我提出的问题只是我试图解决的一个更大问题的一小部分。我知道如何计算两个地理点之间的距离。所以我想如果我能发现车辆的当前位置 C 在停靠点 A 和 B 之间,我就可以找出从 C 到 B 的距离(以及时间),从而沿着它的路线到达后续停靠点。我真的不知道如何做那个程序化的盟友。 (我解决这个问题的方法有什么问题吗?目前我想不出任何其他方法。)注意:我是 stackoverflow 的新手。