问题很简单直接。请帮助。
我正在开发ETA项目,我得到的所有数据都是:
1.从公交车实时GPS位置
2.每站之间的距离
我们需要的数据多于这些吗?
我的大问题是: 如何利用这些数据为客户计算ETA?
我的想法: ETA就是距离/速度, 所以起初:我试着简单地从2个GPS坐标得到距离来计算 速度和使用停止距离来计算ETA。
即。
while(true){
ETA = stopDis/2ptSpeed;
stopDis = stopDis - 2ptDis;
}
和更新日期stopDis<0
时的下一站
然而,问题是GPS数据会非常频繁地跳跃,因此
速度计算真的很乱。
破碎的问题:如何平滑GPS数据?卡尔曼滤波器?平均? 听说过那些但不知道该做什么特别卡尔曼过滤器!
答案 0 :(得分:0)
我不认为这很简单。如果两站之间或不同的速度限制之间有很多红绿灯,该怎么办?
你有gps坐标,所以你可以计算距离,但这不是道路上的距离。所以你需要有一些方法来获得公共汽车需要旅行的真实距离(也许google maps api可以提供帮助)。
所以回答“我们需要的数据多于这些吗?”问题:是的,我想你会这样做。
答案 1 :(得分:0)
只是一个想法:公交时刻表已经包含了平均停车之间需要多长时间的信息。如果您可以从GPS位置读取,如果公交车停在站点或两站之间,您应该能够做出相当准确的预测。
我猜你在谈论一个城市的公共汽车,GPS信号很弱,公共汽车站也不远。
编辑:这可以通过有关当前流量的数据进一步改进。
答案 2 :(得分:0)
由于交通和非直线,距离和速度本身并不是可靠的指标。
我认为您最好的选择是使用该行的历史记录来比较当前距离与该行中当时的平均距离,并推断出与平均ETA的偏差。
答案 3 :(得分:0)
持续收集从停止到停止的旅行时间数据。从该历史数据导出停止之间的预期行程时间以用作基线。这可以不断更新。停止时的初始ETA是最后一站的时间加上最近的平均旅行时间。如果您有连续的GPS数据,您可以实时调整。