【问题标题】:SUMO - simulating traffic scenarioSUMO - 模拟交通场景
【发布时间】:2017-12-11 01:17:14
【问题描述】:

如何从历史数据中模拟连续流量,这些数据包括: 1、车辆标识; 2.速度; 3.坐标

不知道每个车辆ID的路线。

【问题讨论】:

    标签: sumo


    【解决方案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
    

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

    由于您要求持续输入,您可能也有兴趣通过TraCIFAQ on constant input flow 实时进行此操作。

    【讨论】:

    • TBH,我还是新手。有时间戳。那么它将如何改变这种情况呢?谢谢。
    • 时间戳和速度有助于估计行进距离,因此您可以在搜索下一条边时知道最大范围(假设您最后的猜测是正确的)
    猜你喜欢
    • 2016-07-21
    • 1970-01-01
    • 2019-04-19
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多