说明:本文系交通攻城狮原创文章,如需转载请私信联系,侵权必究。
2020,第 30 期,编程笔记
建议直接阅读精编版:如何利用 Python 绘制酷炫的 车辆轨迹 — 速度时空图?三维数据用二维图像呈现mp.weixin.qq.com
以下为正文:
在近期的论文写作中,需要绘制轨迹-速度时空图,中间是几经波折,遇到了各种问题。这个过程也让我再次认识到利用编程解决问题的便利性,可能过程很难,但是这种可以高度自定义真是太多软件无法替代的 ......
1. 问题由来
最近阅读论文中,遇到了一类图,非常好看,并且在其他论文中也多次遇到。比如,在 Trajectory data-based traffic flow studies: A revisit 一文中的图 1 ,如下图所示[1]:
由于原图较长,这里仅引用了部分图。从上图中可以清楚的看出几个关键信息:横轴表示时间变化,说明数据需要是时间序列的
纵轴表示空间位置,可以理解为从离开某一道路截面后,车辆行驶的距离
每条轨迹线均表示一辆车的行驶路径变化,而线条的颜色则表示瞬时速度值
因此,如果想要绘制出上图,那么就需要有车辆的瞬时轨迹、速度、时间等信息的数据集。
2. 准备数据
为了尝试绘制出该图像,现在需要做两个工作。第一,找到合适的数据;第二,找到顺手的绘图工具。
基础数据
在《权威数据:交通领域科研常用数据集总结与分享》一文中,已经分享了常见的公开数据集。本次使用其中 NGSIM 的数据,这和前文中图源数据是一致的。
对于 NGSIM 数据集,作简要介绍[2]:其中包含 4 个路段的车辆轨迹数据,任何一个均是采用在路段的周边高层建筑上设置高清摄像机录像,然后通过图像处理,将每辆车的轨迹变化采集出来,进而可计算出车辆所在的车道、瞬时速度、瞬时加速度、瞬时车头时距等等。
作为与本次绘图相关的关键信息,我们仅需知道以下数据:作为演示,仅使用一个车道的数据即可
每辆车从进入摄像区域到离开,中间的瞬时速度信息,NGSIM 中对应的数据标签是 v_Vel
每辆车从进入摄像区域到离开,中间的位置坐标变化,NGSIM 中对应的数据标签是 Local_X、Local_Y
与之对应的时刻,NGSIM 中对应的数据标签是 Global_Time
好了,知道了上述三个关键数据后,就可以利用绘图工具绘制了。
绘图工具
考虑到可重复性、可移植性和方便程度