我正在尝试使用Android构建实时汽车监控应用程序。这些汽车将以他们当前的位置出现在地图上。问题是通过GPS更新位置很慢。所以建议的解决方案是使用插值,并获取缺失的坐标,直到GPS更新位置。我发现所有提出的解决方案都需要我们有两个GPS坐标点来插入它们之间,但由于我试图实时工作,因此我只有最初的GPS坐标加起来。任何人都可以帮助我如何实现这一目标?或者还有其他建议的方法可以使用吗?如何在java中实时插入GPS读数
回答
为此,您将必须计算车辆从前两个位置(距离/时间,最好是米/秒)的平均速度。由此,您可以构造一个矢量并将其添加到最新的位置矢量,并在下一次更新之间每隔一秒将其自身乘以它自己。下面简单的伪代码:
prevPos = vector
currentPos = vector
prevPosTime = time
currentPosTime = time
speed = ((currentPos - prevPos).magnitude)/(currentPosTime - prevPosTime)
waitingtime = 0
until currentPos change:
assumedLocation = currentPos + ((currentPos - prevPos).normalized * speed * waitingtime)
wait(1s)
waitingtime += 1
我知道这是令人难以置信的基本的,但我希望你得到我这个要去的地方的要点。
编辑 - 只是更多的解释,就是我张口闭口关于
(currentPos - prevPos).normalized
这是车辆的最后已知方向。这可以通过将其乘以任何值来缩放
(currentPos - prevPos).magnitude
这是最后已知的SPEED。我们不能使用归一化的矢量,因为规范化'删除'任何缩放。我们基本上只是计算矢量的大小,这就是我们的速度。
currentPos + ((currentPos - prevPos).normalized * speed * waitingtime)
这增加了从当前位置乘以再乘以自上次更新以来的时间的速度的方向的矢量。您最终预测汽车的位置应该基于之前的行驶速度和行驶方向
建议编辑: 重要提示,这是预测,而不是内插。如果我们知道两个值,我们将使用插值,但由于一个未知,我们正在使用预测。
我明白这一点,但是,你的意思是通过这里归一化'(currentPos - prevPos)。normalized' – prog
好吧,所以一个向量的归一化版本是一个幅度为1的向量。我可以计算如下(首先我们需要长度):'length = sqrt (vector.x^2 + vector.y^2)''normal = new vector(vector.x/length,vector.y/length)' – Polymer
视频链接,如果您想要更详细的解释: https:// www.youtube.com/watch?v = 7fn03DIW3Ak – Polymer
聚合物使用线性预测有一个很好的答案。但是,如果您需要它们,有一些更好的预测方法。
我会用什么是双指数平滑。这不仅将以前的位置考虑在内,还包括所有其他位置。
如果您的GPS也可以给出每次检测的精度,您可以使用卡尔曼滤波器。不是一个简单的过滤器,而是一个很好的过滤器。
- 1. Java编程中的实时GPS更新
- 2. 如何在Linux下读取GPS数据?
- 3. 如何在发布到MySQL时插入GPS坐标?
- 4. 如何插入图像插入在Java
- 5. 与GPS数据在Java中
- 6. 如何在Java中使用Java插入当前时间
- 7. 如何在MySQL上插入Java数据
- 8. 在java中的RedBlackTree插入实现
- 9. Java:读取和解析GPS数据
- 10. 如何在Java中获取GPS时间和TAI时间?
- 11. 何时实际插入数据库?
- 12. 当Android平板电脑/手机插入GPS时,GPS更精确
- 13. 如何在MySQL/PHP中插入和读取时间/日期?
- 14. 插入在读取数据
- 15. 如何插入GIF动画在Java中
- 16. 如何在Java中执行SQL插入
- 17. 如何在java中插入stroke,android
- 18. 如何在java wicket中插入日历
- 19. 如何在Oracle中使用java插入
- 20. 如何在插入或更新实体时添加数据
- 21. 如何读取插入到数据库
- 22. 插入/读阵列到SQLite数据库在java中
- 23. 读取作为块插入的实时数据
- 24. 如何插入数据库使用java POI从Excel表中读取数据?
- 25. 如何在Java中将数据从文件读入数组?
- 26. 的Android GPS读数
- 27. 如何在Java中插入数据库时同时停止线程?
- 28. 实时GPS跟踪
- 29. 如何在更新时插入数据?
- 30. 如何在更新时插入数据?
我不明白,如果它是实时的,你可以有很多以前的仓位存储?也许不是第一次更新,但从那时起.. – cYrixmorten
是的,但我无法获得下一个位置,并在它和我当前的位置之间进行插值,以便在地图上进行流畅的动画@cYrixmorten – prog