1

我有一个由 SUMO 创建的移动模型,实际地图的面积约为 2 KM * 2 Km。我只想计算这个模型的一部分的结果。我读到我可以使用 roiroad 或 roirect。Roirect 将 (x1,y1-x2,y2) 作为 Traci 协调,但是,我想使用 roiroad 来准确地采取特定道路上的汽车。

我的问题是:如果 roiroad 函数采用一串道路名称,那么我可以从 sumo 中的哪里获得这个值。我应该使用 Netconvert 并使用 --output-street-names 再次构建地图吗

4

1 回答 1

0

SUMO 中的边总是有一个 ID。它存储在标签的id="..."属性中。<edge>如果您将网络从其他数据格式(例如,OpenStreetMap)转换为 SUMO 的 XML 表示,您可以选择尝试使用与边缘表示的道路名称非常相似的 ID(这是您提到的选项)。默认是分配一个数字 ID。

除了在文本编辑器中打开道路网络 XML 文件外,您还可以通过在 SUMO GUI 中打开网络并右键单击边缘(或通过在 GUI 中启用边缘 ID 的呈现)来找到边缘 ID。

请注意,根据您模拟的应用程序,您需要确保在您指定的感兴趣区域 (ROI) 中没有“间隙”。当车辆不再在 ROI 中时,其对应的节点将从网络模拟中移除。即使同一辆车后来进入另一个(或相同的)ROI,也会创建一个全新的节点。这在将边缘指定为 ROI(通过roiRoads参数)时尤为重要。请记住,SUMO 不仅使用边来表示街道,而且还表示交叉路口的车道。如果您不指定这些内部边缘,您的 ROI 将在每个交点处有小间隙。

另请注意,在 OMNeT++ 5.0 之前,IDE 中 .ini 文件的语法突出显示将(错误地)显示包含#字符的字符串,就好像它是注释一样。这只是语法高亮的问题。模拟将按预期运行。例如,在 Veins 4.4 示例中将roiRoads参数设置"-5445204#1 :252726232_7 -5445204#2"为如下...

截屏

...将导致 Veins 模拟,其中仅模拟以下三个边缘之一上的汽车:

  • 在通向下方交叉点的边缘上;或者
  • 在穿过下方交叉点的边缘;或者
  • 在离开下方交叉点的边缘。

截屏

于 2016-08-08T14:05:36.400 回答