---
name: "netgenerate"
section: "1"
platform: "linux"
package: "sumo"
version: "1.18.0+dfsg-4+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/netgenerate"
---

# netgenerate(1)

Road network generator for the microscopic traffic simulation SUMO

## NAME

Eclipse - Road network generator for the microscopic traffic simulation SUMO

## SYNOPSIS

**netgenerate** \[*OPTION*\]*\**

## DESCRIPTION

Eclipse SUMO netgenerate Version 1.18.0

-

  Copyright (C) 2001-2023 German Aerospace Center (DLR) and others; https://sumo.dlr.de

Synthetic network generator for the microscopic, multi-modal traffic simulation

-

  SUMO.

-

  Either "--grid", "--spider" or "--rand" must be supplied.

-

  In dependence to these switches other options are used.

### Configuration Options:

- **-c**, **--configuration-file** FILE

  Loads the named config on startup

- **-C**, **--save-configuration** FILE

  Saves current configuration into FILE

- **--save-configuration**.relative

  Enforce relative paths when saving the configuration

- **--save-template** FILE

  Saves a configuration template (empty) into FILE

- **--save-schema** FILE

  Saves the configuration schema into FILE

- **--save-commented**

  Adds comments to saved template, configuration, or schema

### Grid Network Options:

- **-g**, **--grid**

  Forces NETGEN to build a grid-like network

- **--grid**.number INT

  The number of junctions in both dirs

- **--grid**.length FLOAT

  The length of streets in both dirs

- **--grid**.x-number INT

  The number of junctions in x-dir; Overrides **--grid-number**

- **--grid**.y-number INT

  The number of junctions in y-dir; Overrides **--grid-number**

- **--grid**.x-length FLOAT

  The length of horizontal streets; Overrides **--grid-length**

- **--grid**.y-length FLOAT

  The length of vertical streets; Overrides **--grid-length**

- **--grid**.attach-length FLOAT

  The length of streets attached at the boundary; 0 means no streets are attached

- **--grid**.x-attach-length FLOAT

  The length of streets attached at the boundary in x direction; 0 means no streets are attached

- **--grid**.y-attach-length FLOAT

  The length of streets attached at the boundary in y direction; 0 means no streets are attached

### Spider Network Options:

- **-s**, **--spider**

  Forces NETGEN to build a spider-net-like network

- **--spider**.arm-number INT

  The number of axes within the net

- **--spider**.circle-number INT

  The number of circles of the net

- **--spider**.space-radius FLOAT

  The distances between the circles

- **--spider**.omit-center

  Omit the central node of the network

- **--spider**.attach-length FLOAT

  The length of streets attached at the boundary; 0 means no streets are attached

### Random Network Options:

- **-r**, **--rand**

  Forces NETGEN to build a random network

- **--rand**.iterations INT

  Describes how many times an edge shall be added to the net

- **--rand**.max-distance FLOAT

  The maximum distance for each edge

- **--rand**.min-distance FLOAT

  The minimum distance for each edge

- **--rand**.min-angle FLOAT

  The minimum angle for each pair of (bidirectional) roads in DEGREES

- **--rand**.num-tries INT

  The number of tries for creating each node

- **--rand**.connectivity FLOAT

  Probability for roads to continue at each node

- **--rand**.neighbor-dist1 FLOAT

  Probability for a node having exactly 1 neighbor

- **--rand**.neighbor-dist2 FLOAT

  Probability for a node having exactly 2 neighbors

- **--rand**.neighbor-dist3 FLOAT

  Probability for a node having exactly 3 neighbors

- **--rand**.neighbor-dist4 FLOAT

  Probability for a node having exactly 4 neighbors

- **--rand**.neighbor-dist5 FLOAT

  Probability for a node having exactly 5 neighbors

- **--rand**.neighbor-dist6 FLOAT

  Probability for a node having exactly 6 neighbors

- **--rand**.grid

  Place nodes on a regular grid with spacing rand.min-distance

### Input Options:

- **-t**, **--type-files** FILE

  Read edge-type defs from FILE

### Output Options:

- **--write-license**

  Include license info into every output file

- **--output-prefix** STR

  Prefix which is applied to all output files. The special string 'TIME' is replaced by the current time.

- **--precision** INT

  Defines the number of digits after the comma for floating point output

- **--precision**.geo INT

  Defines the number of digits after the comma for lon,lat output

- **-H**, **--human-readable-time**

  Write time values as hour:minute:second or day:hour:minute:second rather than seconds

- **--alphanumerical-ids**

  The Ids of generated nodes use an alphanumerical code for easier readability when possible

- **-o**, **--output-file** FILE

  The generated net will be written to FILE

- **-p**, **--plain-output-prefix** FILE

  Prefix of files to write plain xml nodes, edges and connections to

- **--plain-output**.lanes

  Write all lanes and their attributes even when they are not customized

- **--junctions**.join-output FILE

  Writes information about joined junctions to FILE (can be loaded as additional node-file to reproduce joins

- **--prefix** STR

  Defines a prefix for edge and junction names

- **--amitran-output** FILE

  The generated net will be written to FILE using Amitran format

- **--matsim-output** FILE

  The generated net will be written to FILE using MATsim format

- **--opendrive-output** FILE

  The generated net will be written to FILE using OpenDRIVE format

- **--dlr-navteq-output** FILE

  The generated net will be written to dlr-navteq files with the given PREFIX

- **--dlr-navteq**.precision INT

  The network coordinates are written with the specified level of output precision

- **--output**.street-names

  Street names will be included in the output (if available)

- **--output**.original-names

  Writes original names, if given, as parameter

- **--street-sign-output** FILE

  Writes street signs as POIs to FILE

- **--opendrive-output**.straight-threshold FLOAT

  Builds parameterized curves whenever the angular change  between straight segments exceeds FLOAT degrees

### Processing Options:

- **--turn-lanes** INT

  Generate INT left-turn lanes

- **--turn-lanes**.length FLOAT

  Set the length of generated turning lanes to FLOAT

- **--perturb-x** STR

  Apply random spatial perturbation in x direction according the the given distribution

- **--perturb-y** STR

  Apply random spatial perturbation in y direction according the the given distribution

- **--perturb-z** STR

  Apply random spatial perturbation in z direction according the the given distribution

- **--bidi-probability** FLOAT

  Defines the probability to build a reverse edge

- **--random-lanenumber**

  Draw lane numbers randomly from \[1,default.lanenumber\]

- **--random-priority**

  Draw edge priority randomly from \[1,default.priority\]

- **--random-type**

  Draw edge type randomly from all loaded types

- **--numerical-ids**

  Remaps alphanumerical IDs of nodes and edges to ensure that all IDs are integers

- **--numerical-ids**.node-start INT

  Remaps IDs of nodes to integers starting at INT

- **--numerical-ids**.edge-start INT

  Remaps IDs of edges to integers starting at INT

- **--reserved-ids** FILE

  Ensures that generated ids do not included any of the typed IDs from FILE (sumo-gui selection file format)

- **--geometry**.split

  Splits edges across geometry nodes

- **-R**, **--geometry**.remove

  Replace nodes which only define edge geometry by geometry points (joins edges)

- **--geometry**.remove.keep-edges.explicit STR\[\]

  Ensure that the given list of edges is not modified

- **--geometry**.remove.keep-edges.input-file FILE

  Ensure that the edges in FILE are not modified (Each id on a single line. Selection files from sumo-gui are also supported)

- **--geometry**.remove.min-length FLOAT

  Allow merging edges with differing attributes when their length is below min-length

- **--geometry**.remove.width-tolerance FLOAT

  Allow merging edges with differing lane widths if the difference is below FLOAT

- **--geometry**.remove.max-junction-size FLOAT

  Prevent removal of junctions with a size above FLOAT as defined by custom edge endpoints

- **--geometry**.max-segment-length FLOAT

  splits geometry to restrict segment length

- **--geometry**.max-grade FLOAT

  Warn about edge geometries with a grade in % above FLOAT.

- **--geometry**.max-grade.fix

  Smooth edge geometries with a grade above the warning threshold.

- **--offset**.disable-normalization

  Turn off normalizing node positions

- **--offset**.x FLOAT

  Adds FLOAT to net x-positions

- **--offset**.y FLOAT

  Adds FLOAT to net y-positions

- **--offset**.z FLOAT

  Adds FLOAT to net z-positions

- **--flip-y-axis**

  Flips the y-coordinate along zero

- **--roundabouts**.guess

  Enable roundabout-guessing

- **--roundabouts**.visibility-distance FLOAT

  Default visibility when approaching a roundabout

- **--opposites**.guess

  Enable guessing of opposite direction lanes usable for overtaking

- **--opposites**.guess.fix-lengths

  Ensure that opposite edges have the same length

- **--fringe**.guess

  Enable guessing of network fringe nodes

- **--fringe**.guess.speed-threshold FLOAT

  Guess disconnected edges above the given speed as outer fringe

- **--lefthand**

  Assumes left-hand traffic on the network

- **--edges**.join

  Merges edges which connect the same nodes and are close to each other (recommended for VISSIM import)

### Building Defaults Options:

- **-L**, **--default**.lanenumber INT

  The default number of lanes in an edge

- **--default**.lanewidth FLOAT

  The default width of lanes

- **--default**.spreadtype STR

  The default method for computing lane shapes from edge shapes

- **-S**, **--default**.speed FLOAT

  The default speed on an edge (in m/s)

- **--default**.friction FLOAT

  The default friction on an edge

- **-P**, **--default**.priority INT

  The default priority of an edge

- **--default**.type STR

  The default edge type

- **--default**.sidewalk-width FLOAT

  The default width of added sidewalks

- **--default**.bikelane-width FLOAT

  The default width of added bike lanes

- **--default**.crossing-width FLOAT

  The default width of a pedestrian crossing

- **--default**.crossing-speed FLOAT

  The default speed 'limit' on a pedestrian crossing (in m/s)

- **--default**.walkingarea-speed FLOAT

  The default speed 'limit' on a pedestrian walkingarea (in m/s)

- **--default**.allow STR

  The default for allowed vehicle classes

- **--default**.disallow STR

  The default for disallowed vehicle classes

- **--default**.junctions.keep-clear

  Whether junctions should be kept clear by default

- **--default**.junctions.radius FLOAT

  The default turning radius of intersections

- **--default**.connection-length FLOAT

  The default length when overriding connection lengths

- **--default**.right-of-way STR

  The default algorithm for computing right of way rules ('default', 'edgePriority')

- **-j**, **--default-junction-type** STR

  \[traffic\_light\|priority\|right\_before\_left\|left\_before\_right\|traffic\_light\_right\_on\_red\|priority\_stop\|allway\_stop\|...\] Determines junction type (see wiki/Networks/PlainXML#Node\_types)

### TLS Building Options:

- **--tls**.set STR\[\]

  Interprets STR\[\] as list of junctions to be controlled by TLS

- **--tls**.unset STR\[\]

  Interprets STR\[\] as list of junctions to be not controlled by TLS

- **--tls**.guess

  Turns on TLS guessing

- **--tls**.guess.threshold FLOAT

  Sets minimum value for the sum of all incoming lane speeds when guessing TLS

- **--tls**.guess.joining

  Includes node clusters into guess

- **--tls**.join

  Tries to cluster tls-controlled nodes

- **--tls**.join-dist FLOAT

  Determines the maximal distance for joining traffic lights (defaults to 20)

- **--tls**.join-exclude STR\[\]

  Interprets STR\[\] as list of tls ids to exclude from joining

- **--tls**.uncontrolled-within

  Do not control edges that lie fully within a joined traffic light. This may cause collisions but allows old traffic light plans to be used

- **--tls**.ignore-internal-junction-jam

  Do not build mutually conflicting response matrix, potentially ignoring vehicles that are stuck at an internal junction when their phase has ended

- **--tls**.cycle.time INT

  Use INT as cycle duration

- **--tls**.green.time INT

  Use INT as green phase duration

- **-D**, **--tls**.yellow.min-decel FLOAT

  Defines smallest vehicle deceleration

- **--tls**.yellow.patch-small

  Given yellow times are patched even if being too short

- **--tls**.yellow.time INT

  Set INT as fixed time for yellow phase durations

- **--tls**.red.time INT

  Set INT as fixed time for red phase duration at traffic lights that do not have a conflicting flow

- **--tls**.allred.time INT

  Set INT as fixed time for intermediate red phase after every switch

- **--tls**.minor-left.max-speed FLOAT

  Use FLOAT as threshold for allowing left-turning vehicles to move in the same phase as oncoming straight-going vehicles

- **--tls**.left-green.time INT

  Use INT as green phase duration for left turns (s). Setting this value to 0 disables additional left-turning phases

- **--tls**.nema.vehExt INT

  Set INT as fixed time for intermediate vehext phase after every switch

- **--tls**.nema.yellow INT

  Set INT as fixed time for intermediate NEMA yelow phase after every switch

- **--tls**.nema.red INT

  Set INT as fixed time for intermediate NEMA red phase after every switch

- **--tls**.crossing-min.time INT

  Use INT as minimum green duration for pedestrian crossings (s).

- **--tls**.crossing-clearance.time INT

  Use INT as clearance time for pedestrian crossings (s).

- **--tls**.scramble.time INT

  Use INT as green phase duration for pedestrian scramble phase (s).

- **--tls**.half-offset STR\[\]

  TLSs in STR\[\] will be shifted by half-phase

- **--tls**.quarter-offset STR\[\]

  TLSs in STR\[\] will be shifted by quarter-phase

- **--tls**.default-type STR

  TLSs with unspecified type will use STR as their algorithm

- **--tls**.layout STR

  Set phase layout four grouping opposite directions or grouping all movements for one incoming edge \['opposites', 'incoming'\]

- **--tls**.no-mixed

  Avoid phases with green and red signals for different connections from the same lane

- **--tls**.min-dur INT

  Default minimum phase duration for traffic lights with variable phase length

- **--tls**.max-dur INT

  Default maximum phase duration for traffic lights with variable phase length

- **--tls**.group-signals

  Assign the same tls link index to connections that share the same states

- **--tls**.ungroup-signals

  Assign a distinct tls link index to every connection

- **--tls**.rebuild

  rebuild all traffic light plans in the network

- **--tls**.discard-simple

  Does not instatiate traffic lights at geometry-like nodes

### Edge Removal Options:

- **--keep-edges**.min-speed FLOAT

  Only keep edges with speed in meters/second \> FLOAT

- **--remove-edges**.explicit STR\[\]

  Remove edges in STR\[\]

- **--keep-edges**.explicit STR\[\]

  Only keep edges in STR\[\] or those which are kept due to other keep-edges or remove-edges options

- **--keep-edges**.input-file FILE

  Only keep edges in FILE (Each id on a single line. Selection files from sumo-gui are also supported) or those which are kept due to other keep-edges or remove-edges options

- **--remove-edges**.input-file FILE

  Remove edges in FILE. (Each id on a single line. Selection files from sumo-gui are also supported)

- **--keep-edges**.in-boundary STR\[\]

  Only keep edges which are located within the given boundary (given either as CARTESIAN corner coordinates \<xmin,ymin,xmax,ymax\> or as polygon \<x0,y0,x1,y1,...\>)

- **--keep-edges**.in-geo-boundary STR\[\]

  Only keep edges which are located within the given boundary (given either as GEODETIC corner coordinates \<lon-min,lat-min,lon-max,lat-max\> or as polygon \<lon0,lat0,lon1,lat1,...\>)

### Unregulated Nodes Options:

- **--keep-nodes-unregulated**

  All nodes will be unregulated

- **--keep-nodes-unregulated**.explicit STR\[\]

  Do not regulate nodes in STR\[\]

- **--keep-nodes-unregulated**.district-nodes

  Do not regulate district nodes

### Junctions Options:

- **--junctions**.right-before-left.speed-threshold FLOAT

  Allow building right-before-left junctions when the incoming edge speeds are below FLOAT (m/s)

- **--junctions**.left-before-right

  Build left-before-right junctions instead of right-before-left junctions

- **--no-internal-links**

  Omits internal links

- **--no-turnarounds**

  Disables building turnarounds

- **--no-turnarounds**.tls

  Disables building turnarounds at tls-controlled junctions

- **--no-turnarounds**.geometry

  Disables building turnarounds at geometry-like junctions

- **--no-turnarounds**.except-deadend

  Disables building turnarounds except at dead end junctions

- **--no-turnarounds**.except-turnlane

  Disables building turnarounds except at at junctions with a dedicated turning lane

- **--no-turnarounds**.fringe

  Disables building turnarounds at fringe junctions

- **--no-left-connections**

  Disables building connections to left

- **--junctions**.join

  Joins junctions that are close to each other (recommended for OSM import)

- **--junctions**.join-dist FLOAT

  Determines the maximal distance for joining junctions (defaults to 10)

- **--junctions**.join-same

  Joins junctions that have the same coordinates even if not connected

- **--max-join-ids** INT

  Abbreviate junction or TLS id if it joins more than INT junctions

- **--junctions**.corner-detail INT

  Generate INT intermediate points to smooth out intersection corners

- **--junctions**.internal-link-detail INT

  Generate INT intermediate points to smooth out lanes within the intersection

- **--junctions**.scurve-stretch FLOAT

  Generate longer intersections to allow for smooth s-curves when the number of lanes changes

- **--junctions**.join-turns

  Builds common edges for turning connections with common from- and to-edge. This causes discrepancies between geometrical length and assigned length due to averaging but enables lane-changing while turning

- **--junctions**.limit-turn-speed FLOAT

  Limits speed on junctions to an average lateral acceleration of at most FLOAT m/s^2)

- **--junctions**.limit-turn-speed.min-angle FLOAT

  Do not limit turn speed for angular changes below FLOAT (degrees). The value is subtracted from the geometric angle before computing the turning radius.

- **--junctions**.limit-turn-speed.min-angle.railway FLOAT

  Do not limit turn speed for angular changes below FLOAT (degrees) on railway edges. The value is subtracted from the geometric angle before computing the turning radius.

- **--junctions**.limit-turn-speed.warn.straight FLOAT

  Warn about turn speed limits that reduce the speed of straight connections by more than FLOAT

- **--junctions**.limit-turn-speed.warn.turn FLOAT

  Warn about turn speed limits that reduce the speed of turning connections (no u-turns) by more than FLOAT

- **--junctions**.small-radius FLOAT

  Default radius for junctions that do not require wide vehicle turns

- **--junctions**.higher-speed

  Use maximum value of incoming and outgoing edge speed on junction instead of average

- **--junctions**.minimal-shape

  Build junctions with minimal shapes (igoring edge overlap)

- **--internal-junctions**.vehicle-width FLOAT

  Assumed vehicle width for computing internal junction positions

- **--rectangular-lane-cut**

  Forces rectangular cuts between lanes and intersections

- **--check-lane-foes**.roundabout

  Allow driving onto a multi-lane road if there are foes on other lanes (at roundabouts)

- **--check-lane-foes**.all

  Allow driving onto a multi-lane road if there are foes on other lanes (everywhere)

### Pedestrian Options:

- **--sidewalks**.guess

  Guess pedestrian sidewalks based on edge speed

- **--sidewalks**.guess.max-speed FLOAT

  Add sidewalks for edges with a speed equal or below the given limit

- **--sidewalks**.guess.min-speed FLOAT

  Add sidewalks for edges with a speed above the given limit

- **--sidewalks**.guess.from-permissions

  Add sidewalks for edges that allow pedestrians on any of their lanes regardless of speed

- **--sidewalks**.guess.exclude STR\[\]

  Do not guess sidewalks for the given list of edges

- **--crossings**.guess

  Guess pedestrian crossings based on the presence of sidewalks

- **--crossings**.guess.speed-threshold FLOAT

  At uncontrolled nodes, do not build crossings across edges with a speed above the threshold

- **--walkingareas**

  Always build walking areas even if there are no crossings

- **--walkingareas**.join-dist FLOAT

  Do not create a walkingarea between sidewalks that are connected by a pedestrian junction within FLOAT

### Bicycle Options:

- **--bikelanes**.guess

  Guess bike lanes based on edge speed

- **--bikelanes**.guess.max-speed FLOAT

  Add bike lanes for edges with a speed equal or below the given limit

- **--bikelanes**.guess.min-speed FLOAT

  Add bike lanes for edges with a speed above the given limit

- **--bikelanes**.guess.from-permissions

  Add bike lanes for edges that allow bicycles on any of their lanes regardless of speed

- **--bikelanes**.guess.exclude STR\[\]

  Do not guess bikelanes for the given list of edges

### Report Options:

- **-v**, **--verbose**

  Switches to verbose output

- **--print-options**

  Prints option values before processing

- \-?, **--help**

  Prints this screen or selected topics

- **-V**, **--version**

  Prints the current version

- **-X**, **--xml-validation** STR

  Set schema validation scheme of XML inputs ("never", "local", "auto" or "always")

- **-W**, **--no-warnings**

  Disables output of warnings

- **--aggregate-warnings** INT

  Aggregate warnings of the same type whenever more than INT occur

- **-l**, **--log** FILE

  Writes all messages to FILE (implies verbose)

- **--message-log** FILE

  Writes all non-error messages to FILE (implies verbose)

- **--error-log** FILE

  Writes all warnings and errors to FILE

- **--language** STR

  Language to use in messages

### Random Number Options:

- **--random**

  Initialises the random number generator with the current system time

- **--seed** INT

  Initialises the random number generator with the given value

## EXAMPLES

-

  netgenerate -c \<CONFIGURATION\>

-

  create net from given configuration

-

  netgenerate --grid \[grid-network options\] -o \<OUTPUTFILE\>

-

  create grid net

-

  netgenerate --spider \[spider-network options\] -o \<OUTPUTFILE\>

-

  create spider net

-

  netgenerate --rand \[random-network options\] -o \<OUTPUTFILE\>

-

  create random net

## REPORTING BUGS

Report bugs at \<https://github.com/eclipse/sumo/issues\>.\
 Get in contact via \<sumo@dlr.de\>.

-

  Build features: Linux-6.1.0-28-amd64 x86\_64 GNU 14.2.0 None FMI Proj GUI Intl SWIG GDAL FFmpeg OSG GL2PS Eigen\
   Copyright (C) 2001-2023 German Aerospace Center (DLR) and others; https://sumo.dlr.de

Eclipse SUMO netgenerate Version 1.18.0 is part of SUMO.\
 This program and the accompanying materials are made available under the terms of the Eclipse Public License v2.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v20.html\
 This program may also be made available under the following Secondary\
 Licenses when the conditions for such availability set forth in the Eclipse\
 Public License 2.0 are satisfied: GNU General Public License, version 2 or later which is available at https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html\
 SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
