java - 如何确定地理点(纬度,经度对)是否位于连接两个地理点的线上

标签 java location

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

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

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

    <

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

最佳答案

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

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

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

回到库:也许流行的库是通过某种近似实现的。例如,如果城市不大,可以使用笛卡尔近似(我在 SUMO 中遇到过这样的功能。该工具是专门为交通模拟而设计的。它使用平面二维坐标)。

关于java - 如何确定地理点(纬度,经度对)是否位于连接两个地理点的线上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19652471/

相关文章:

javascript - 通过位置验证用户 JAVASCRIPT

ios - 谷歌地图会在离线模式下更新当前位置吗?

location - 找到我的自定义代码片段 Xcode 6?

ios - 在 iOS 中获取街道名称

java - 阅读 Java 中的 Web 服务

java - 更容易部署的 Ant 任务

java - Spring 启动: JSON parameter starting with special character

java - Eclipse 项目布局类路径问题

ios - 获取用户当前位置/坐标

java - 为什么我会收到已知和受信任证书的 "No issuer certificate for certificate in certification path found"错误?