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 支持。
