抽象网络生成

netgenerate 允许生成三种类型的抽象网络:网格型(grid)、蛛网型(spider)和随机型(random)。

您必须使用以下开关之一来指定要创建的网络类型:--grid--spider--rand。您可以使用 --output <FILENAME> 或简写 -o <FILENAME> 来提供要生成的网络名称,默认为 "net.net.xml"。

网格型网络#

您可以描述要在 x 和 y 方向上构建的路口数量以及它们之间的距离。路口数量的参数是 --grid.x-number--grid.y-number,而路口之间的距离是 --grid.x-length--grid.y-length。如果您想构建两个轴具有相同值的网络,请使用 --grid.number--grid.length。长度以米为单位。可以给出另一个选项 --grid.attach-length,它会在网格的边界添加给定长度的街道,以便所有交叉口都有四条街道(目前还不能为 x 和 y 方向设置不同的附加长度)。

构建的示例用法如下:

netgenerate --grid --grid.number=10 --grid.length=400 --output-file=MySUMOFile.net.xml

或者:

netgenerate --grid --grid.x-number=20 --grid.y-number=5 \
 --grid.y-length=40 --grid.x-length=200 --output-file=MySUMOFile.net.xml

这些调用将分别生成以下网络:

蛛网型网络#

蛛网型网络由划分它们的轴线数量(参数 --spider.arm-number--arms,默认为 13)、构成的圆圈数量(--spider.circle-number--circles,默认为 20)以及圆圈之间的距离(--spider.space-radius--radius,单位为米,默认为 100)来定义。

Caution

蛛网中心的边数量可能相当大,因此通常无法在此处构建交通灯路口。因此,该路口始终是无管制的。

或者,您可以通过指定 --spider.omit-center--nocenter 来省略网络的中心路口。这也为生成圆形网络提供了一种简单的方法。例如使用:

netgenerate --spider --spider-omit-center --output-file=MySUMOFile.net.xml

将创建一个由 13 个元素组成、半径为 100m 的圆。

两个用法示例:

netgenerate --spider --spider.arm-number=10 --spider.circle-number=10 \
 --spider.space-radius=100 --output-file=MySUMOFile.net.xml

和:

netgenerate --spider --spider.arm-number=4 --spider.circle-number=3 \
 --spider.space-radius=100 --output-file=MySUMOFile.net.xml

这些调用将分别生成以下网络:

随机网络#

随机网络生成器正如其名,它构建随机网络。可以更改多个设置:

  • --rand.iterations <INT>:
  • --rand.bidi-probability <FLOAT>: 构建反向边的概率
  • --rand.max-distance <FLOAT>: 最大边长
  • --rand.min-distance <FLOAT>: 最小边长
  • --rand.min-angle <FLOAT>: 两条边之间的最小角度
  • --rand.num-tries <INT>:
  • --rand.connectivity <FLOAT>:
  • --rand.neighbor-dist1 <FLOAT>:
  • --rand.neighbor-dist2 <FLOAT>:
  • --rand.neighbor-dist3 <FLOAT>:
  • --rand.neighbor-dist4 <FLOAT>:
  • --rand.neighbor-dist5 <FLOAT>:
  • --rand.neighbor-dist6 <FLOAT>:

一个示例:

netgenerate --rand -o MySUMOFile.net.xml --rand.iterations=200

此调用将生成以下网络:

随机网格#

通过设置选项 --rand.grid,可以在随机网络生成期间强制执行额外的网格结构。新生成的网格节点将从现有节点沿基本方向以 --rand.min-distance 的倍数分支,直到达到 --rand.max-distance 的距离。由于新节点连接到多个现有节点,因此仍会存在任意角度的边,但网络的基本结构是网格状的。

更多选项#

所有抽象网络类型都共享一些命令行选项。

  • --default-junction-type-option(或简写 -j):设置默认的路口类型(例如 'priority'、'traffic_light' 等)。
  • --turn-lanes: 设置在每个路口生成的转弯车道数量
  • --turn-lanes.length: 设置生成的转弯车道的长度。更具体地说:
    • 0: 无单独的仅转弯车道;
    • 1: 添加一个左转和掉头专用道作为新的最左侧车道;
    • 2: 添加一个左转和掉头专用道作为新的最左侧车道,并添加一个右转专用道作为新的最右侧车道;
    • 3: 添加一个掉头专用道作为新的最左侧车道,一个左转专用道作为新的次左侧车道,以及一个右转专用道作为新的最右侧车道;
    • 4: 添加一个掉头专用道作为新的最左侧车道,一个左转专用道作为新的次左侧车道,一个左转专用道作为新的第三左侧车道,以及一个右转专用道作为新的最右侧车道;
    • 5: 添加一个掉头专用道作为新的最左侧车道,一个左转专用道作为新的次左侧车道,一个左转专用道作为新的第三左侧车道,一个左转专用道作为新的第四左侧车道,以及一个右转专用道作为新的最右侧车道。
  • --perturb.x: 通过 0 和 FLOAT 之间的随机量在 x 方向上扰动节点位置
  • --perturb.y: 通过 0 和 FLOAT 之间的随机量在 y 方向上扰动节点位置
  • --perturb.z: 通过 0 和 FLOAT 之间的随机量在 z 方向上扰动节点位置

此外,您可以使用与 netconvert 应用程序相同的选项来设置街道交通灯的默认值。许多其他 netconvert 选项,如 --lefthand,也由 netgenerate 支持。