0

如何从历史数据中模拟连续的交通流量,其中包括: 1. 车辆 ID;2.速度;3.坐标

在不知道每个车辆 ID 的路线的情况下。

4

1 回答 1

1

这是一个常见问题,但以前可能没有在这里得到回答。不幸的是,答案很大程度上取决于您输入数据的质量,主要取决于您的位置更新的频率/距离(如果每个数据都有一个时间戳也会很有帮助)以及位置与您的街道网络的匹配程度。在最好的情况下,街道网络中路线的每个边缘都有一个位置更新,您可以通过将位置映射到街道来简单地读取路线。可以使用 sumo 附带的 python sumolib 来完成此映射:

import sumolib 
net = sumolib.net.readNet("myNet.net.xml")
route = []
radius = 1
for x, y in coordinates:
    minDist, minEdge = min([(dist, edge) for edge, dist in net.getNeighboringEdges(x_coordinate, y_coordinate, radius)])
    if len(route) == 0 or route[-1] != minEdge.getID():
        route.append(minEdge.getID())

另请参阅http://sumo.dlr.de/wiki/Tools/Sumolib#locate_nearby_edges_based_on_the_geo-coordinate了解其他地理转换。

如果路径中有一条边没有被数据点击中,或者您有不匹配的情况(例如匹配一条“错误”方向的边),这将失败。在前一种情况下,您可以使用 sumo 的 duarouter 轻松修复路线。

> duarouter -n myNet.net.xml -r myRoutesWithGaps.rou.xml -o myRepairedRoutes.rou.xml --repair

后一种情况更难检测和修复,因为它在很大程度上取决于您对错误边缘的定义。几乎有明显的情况,例如突然撞到相反的方向(在实际交通中仍然可能发生)和许多难以决定且值得单独回答的小弯路。

由于您要求持续输入,因此您可能也有兴趣使用TraCI实时执行此操作,并查看此关于持续输入流的常见问题解答

于 2017-04-04T05:58:47.503 回答