【问题标题】:Convenient way for creating a circle network创建圈子网络的便捷方式
【发布时间】:2018-06-02 19:01:58
【问题描述】:

我正在尝试在 SuMO 中创建一个圈子网络。由于我需要试验半径、车道、车辆等参数,因此我希望它能够自动生成。

到目前为止,我编写了一个脚本,它使用--spider 选项利用netgenerate 生成这样一个循环网络(正如building a circular networkdriving in circles 的SuMO 教程所建议的那样):

netgenerate --spider --spider.arm-number=1024 --spider.circle-number=1 --spider.space-radius=100 --spider.omit-center --no-turnarounds --default.lanenumber 2 -o circle.net.xml --edges.join --no-internal-links --no-left-connections --junctions.corner-detail 1000

这已经给了我一个漂亮的圆圈,但是,我仍然需要手动合并所有这些边(即在本例中为 1024,这是在脚本中完成的):

netconvert -s circle.net.xml --plain-output-prefix circle
netconvert -n circle.nod.xml -e circle.edg.xml -x circle.con.xml -o circle.net.xml --geometry.remove --no-turnarounds --no-internal-links --geometry.remove.keep-edges.explicit '1/1to2/1,'512'/1to'513'/1'
netconvert -n circle.nod.xml -e circle.edg.xml -x circle.con.xml -o circle.net.xml --geometry.remove --no-turnarounds --no-internal-links --geometry.remove.keep-edges.explicit '1/1to'1024'/1'

在这些命令之后,我有以下网络:

但是,这种方法似乎是一个大技巧,因为我在我的脚本中手动计算要保留的边缘名称(在上述命令中使用)并且它缺少一些功能(例如,移除相反方向的道路,具有圈内每条道路/环只有一条边),netgenerate 无法实现。

有没有其他方便的方式来生成圈网?

【问题讨论】:

    标签: sumo


    【解决方案1】:

    对我来说,这个圈子看起来不错:-)。如果您唯一缺少的是删除相反方向的可能性,那么您可以将其从边缘文件中删除,然后再将其放回 netconvert。当然你也可以用这样的python脚本生成你的边缘形状(x,y是中心,r是半径,c是角的数量)

    with open("my.edg.xml", "w") as output:
        angle = 2 * math.pi / c
        shape = ["%.2f,%.2f" % (math.cos(i * angle) * r + x,
                                math.sin(i * angle) * r + y) for i in range(c)]
        print('''
    <edges>
        <edge id="e1" from="n1" to="n2" shape="%s"/>
        <edge id="e2" from="n2" to="n1"/>
    </edges>''' % " ".join(shape), file=output)
    

    节点文件的内容留给读者练习。

    还有两个注意事项:

    • 单边无法做到这一点。 SUMO 中不允许自循环。
    • 最好将形状的前半部分分配给第一条边,将后半部分分配给第二条边,以避免在很短的连接边上出现奇怪的测量值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多