1

我正在创建一个 java 应用程序,它可以为车辆在其路线的下一站提供估计的到达时间 (eta)。车辆发送它的当前位置(纬度和经度)和它所遵循的路线。路线是一条折线,它的终点是沿该路线的站点。每个站点由一个地理点(纬度,经度对)表示。此外,路线来自一组已知路线,即沿路线的每个站点的位置(纬度、经度)是已知的。 我想确定车辆在其路线上的下一站的 eta。 我已经预先计算了从停靠点 A 沿路线移动到停靠点 B 所需的时间。(例如,考虑巴士路线)。因此,一旦我获得了当前位置(它可能是一个停靠点或沿路线的两个停靠点之间的某个位置),我就可以找出从当前位置到下一站的距离。根据该距离,我可以通过添加预先计算的停靠时间来计算到达下一站以及沿途所有其他站点所需的时间。现在,我的问题是

  1. 如何判断车辆传输的当前位置(经纬度)是否真的在路线沿线。

  2. 如果 1) 为真,如何确定当前位置位于沿路线的哪两个停靠点之间(这样我就可以计算从当前位置到下一个停靠点的距离。)

如果它是笛卡尔坐标系,则很容易确定一个点是否位于由两个端点连接的线上。如何为地理点(纬度,经度对)执行此操作。我在网上搜索过,有计算两个地理点之间距离的方法,但没有找到任何方法来确定一个地理点是否位于两个地理点之间的线上

4

1 回答 1

0

在笛卡尔坐标系的情况下,很容易组成一个穿过两点的线的方程(因为这样的线是唯一的)。在球体的情况下,可以绘制几条穿过表面上两点的线。更重要的是,在某些情况下,可以通过两点画出几条等长的线。因此,流行的 GIS 库中没有这样的 API 也就不足为奇了(但专门的数学包可以包含这些东西)。

  1. @David Wallace已经提到了正确的方法

  2. 对多段线的每一段应用上述规则。然后选择与车辆位置和路段终点之间的预期距离偏差最小为特征的路段。该路段将是路线的当前部分。

回到图书馆:也许流行的图书馆是通过一些近似实现的。例如,在不是大城市的情况下,可以使用笛卡尔近似(我在SUMO中遇到过这样的功能。该工具是专门为交通模拟设计的。它使用平面 2D 坐标)。

于 2015-11-10T08:53:16.653 回答