十一期间开车到五六线线城市,发现高德地图的红绿灯读秒功能竟然依旧比较精准,之前在一二线城市了解地图的读秒是使用政府交通部门的数据,那五六线城市的数据应该是没那么全,那怎么实现读秒的呢?于是找到相关高德地图专利,了解了一下原理。
高德地图
原理
首先高德地图有大量的导航数据,本身这些数据存在规律性,所以按照高德专利中的描述,原理如下:
(1)读取目标样本的数据;
(2)基于样本车辆的轨迹数据,确定在所述目标时段的第一次启动的起始的样本车辆;
(3)将所述起始样本车辆的启动时间作为起始时间,确定所述目标时间段内其他样本车辆的启动时间距离所述起始时间的偏移时长;
(4)统计所述样本车辆在所述偏移时长维度上的数量分布信息;
(5)基于所述数量分布信息的周期性特征确定所述目标红绿灯的周期时长;
难点
从上述的流程可以看出,只需要足够多的样本数据就可以绘制出如下图:
样本图
但是仍然有如下难点需要解决:
- 如何去除噪声数据,由于地图导航中有一些非机动车并不会按照红绿灯执行;
- 如何解决车道的红绿灯的读秒,由于不同的车道可能红绿灯不一样,但是对车的定位精度不会特别准,这就导致不同车道的读秒可能存在误读;
- 对于一些路口的车辆比较少的情况,样本数据不足如何解决?
- 交通拥堵的情况下,大量车辆等待会导致后台分析误认为存在红绿灯,如何剔除这种周期拥堵的数据?
- 如何区分单周期红绿灯和多周期的红绿灯,这样红绿灯存在同一天不同时段的等待时间不一样;
- ...
从高德地图技术细节可以找到一些解决方案:
(1)如何去除噪声数据?
利用预先训练的轨迹分类模型对轨迹数据进行分类,其分类结果可以是机动车轨迹和非机动车轨迹。
(2)解决多车道的问题?
在确定是否为在目标红绿灯前停车并等待红灯的样本车辆,可以先将目标红绿灯所连通的两个连通路段关联起来,也即该相关联的两个连通路段中,从第一路段通过红绿灯可以行驶到第二路段,而针对同一目标红绿灯,可以建立一组或多组相关联的连通路段,每组包括两个连通路段。
(3)如何区分交通拥堵?
通过将一天进行切片后得到多个时间段,针对每个时间段统计样本车辆在目标红绿灯前停车的时间,然后通过滤波算法(如离散傅立叶算法),这样更容易找到稳定的周期,从而剔除拥堵的情况。
...
参考
(1)https://patentimages.storage.googleapis.com/75/d2/bd/e3acaa57437b92/CN114463969B.pdf