NGSIM数据集Python处理(车辆变道时周边车辆数据提取)

        本文通过Python代码的编写,对NGSIM数据集中车辆变道时周边车辆的加速度、速度等信息进行提取,主要介绍代码逻辑及思路。

        关于NGSIM数据集不再赘述,本人上传有NGSIM各路段各车型的车辆数据以及各路段平面示意图,可点击链接NGSIM数据.zip_ngsim提取换道数据Python源代码-交通文档类资源-CSDN文库进行下载。本文代码实现基于NGSIM数据集中US-101路段的小型车数据,前期数据筛选和提取看参见本人前期发表文章NGSIM数据集Python处理(按照路段和车型筛选数据)_Mr.J的博客-CSDN博客

        处理代码可分为以下四部分。

1.变道主车数据获取

        在进行这部分处理时,需要特别注意的是如何判定车辆的换道时刻,在这里可以通过Lane_ID进行判别。而后从Lane_ID间断处将同一ID的车辆数据进行切割,提取切割后的非最后一个子文件中最后一行中对应的ID和坐标以及全局时间即可完成第一步工作。对于最后一个子文件,即每一ID的最后一行数据,因为其后缺失数据,若直接采用Lane_ID相减不等于0进行判别,将会得到任何一个ID的车辆最后都产生了变道,显然,这是错误的。因此对于这个地方的数据需要进行特别处理。lst_c为切割索引列表。解决该方法可对lst_c进行如下操作:

lst_c.insert(0, 0)
    lst_c.sort()

2.同一时间其他车辆数据的获取

        根据步骤1获取到的车辆变道时间,遍历原始文件,获取该时间点,所有候选车辆的数据,这里需要注意的是,需要将主车的数据排除在外,否则最后得到的数据中主车数据将会冗余。处理代码如下:

 S_S_data=new_data.iloc[lst_c[j]:lst_c[j+1]].copy()           
        S_S_Global_Time=list(S_S_data['Global_Time'])[-1]

3.筛选距离满足要求的车辆数据

        首先设定筛选范围,该范围可任意设定,示例中设定该范围为周边60m,将距离满足筛选范围的数据提取到最终周边车辆的数据中,这里需要使用使用索引进行提取对应的数据。

            if (abs((Origin_X-Judgment_X[index])**2+(Origin_Y-Judgment_Y[index])**2))**0.5<=60*3.2808:
                lst_Near_ID.append(Judgment_ID[index])

4.将满足要求的车辆数据及变道主车的相关数据写入目标文件

        将数据写入时,将列表整体写入dataframe的列中,在这里采用重置索引,可解决长度和索引不匹配的ValueError问题。

finally_data['Near_ID'] = pd.Series(lst_Near_ID, index=range(len(lst_Near_ID)))

        至此,邻近车辆数据已写入目标文件,每次处理完一个小文件时,需要对除lst_c以外的其他列表进行清空。将主车车辆写入文件使用插入即可:

finally_data.loc[0,'Origin_ID'] = Origin_ID

                代码最终得到的数据如下:

如需代码,可点击本人上传的资源NSSIM数据车辆变道时邻近车辆数据提取-交通文档类资源-CSDN文库进行下载。

如需文件,可点击本人上传的资源

NGSIM数据车辆变道时周边车辆数据提取-数据集文档类资源-CSDN文库进行下载

 若有疑问,需完整代码或有交通数据处理需求欢迎VX探讨:A2528945820

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惜君如常

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值