From 30.000 feet#
netconvert imports digital road networks from different sources and generates road networks that can be used by other tools from the package.
- Purpose: Road networks import and conversion
- System: portable (Linux/Windows is tested); runs on command line
- Input (mandatory): Definition of a road network
- Output: A generated SUMO-road network; optionally also other outputs
- Programming Language: C++
Usage Description#
netconvert is a command line application. It assumes at least one parameter - the combination of the name of the file type to import as parameter name and the name of the file to import as parameter value. So, for importing a network from OpenStreetMap one could simply write:
netconvert --osm my_osm_net.xml
and for importing a VISUM-network:
netconvert --visum my_visum_net.net
In both cases, as no output name is given, the SUMO network generated from the imported data is written into the file "net.net.xml". To write the network into a different file, use the option -o <FILE>. If you want to save the imported VISUM-network into a file named "my_sumo_net.net.xml", write:
netconvert --visum my_visum_net.net -o my_sumo_net.net.xml
Many further parameter steer how the network is imported and how the resulting SUMO-network is generated.
Supported Network Formats#
Import#
netconvert is able to import road networks from the following formats:
- "SUMO plain" XML descriptions (*.edg.xml, *.nod.xml, *.con.xml, *.tll.xml)
- OpenStreetMap (*.osm.xml), including shapes (see OpenStreetMap import)
- VISUM, including shapes and demands
- Vissim, including demands
- OpenDRIVE
- MATsim
- SUMO (*.net.xml)
- Shapefiles (.shp, .shx, .dbf), e.g. ArcView and newer Tiger networks
- Robocup Rescue League, including shapes
- a DLR internal variant of Navteq's GDF (Elmar format)
Merging networks#
- any input files may be combined
- "plain XML" files will be applied last and can be used to patch/update previously loaded elements
- multiple sumo networks (.net.xml) may be merged by giving a list of files: --sumo-net-file FILE1,FILE2. The offsets will be handled automatically for geo-referenced network data
- To merge nodes and edges which occupy the same location but have different ids, the options --junctions.join-same FLOAT --edges.join can be set. It may be useful to combine this with option --geometry.split to create additional attachment points (or see below for an alternative). When using --geometry.split it is recommended to call netconvert a second time with --geometry.remove afterwards.
- If a network was processed with option --geometry.remove, this may have removed intermediate junctions that would be needed when merging networks (i.e. when later adding roads with a lower road class). If the network provides edge param
removedNodeIds(which is accomplished by combining --geometry.remove with --output.removed-nodes), then option --junctions.attach-removed FLOAT can be used to split edges as need and re-attach the merged roads.
Export#
netconvert is able to export road networks in the following formats:
- SUMO (*.net.xml)
- "SUMO native" XML descriptions (*.edg.xml, *.nod.xml, *.con.xml, *.tll.xml)
- OpenDRIVE
- MATsim
- a DLR internal variant of Navteq's GDF (Elmar format)
- a basic network view developed in the Amitran project
Using python tools, conversion of .net.xml files into further formats is supported:
Further supported Data Formats#
Import#
- Public transport stops. The main use of importing stop data is to update/add access information or filter stops when reducing the network size.
- Public transport lines: Automatically updated when reducing network extent.
- Shape definitions to be embedded in network output that supports this (OpenDRIVE)
- Elevation Data files
Export#
The following list ouf output is explained in more detail at Networks/Further_Outputs
- Public transport stops. Currently, this can only be imported from OSM
- Public transport lines
- Information on joined junctions
- Street Signs (as POIs)
- Street Names (embedded within the .net.xml output
- Parking Areas (currently, only road-side parking can be imported from OSM)
- Railway topology output: A file for analyzing the topology of railway networks in regard to bi-directional track usage
- OpenDrive road objects
- VISUM districts
Options#
You may use a XML schema definition file for setting up a netconvert configuration: netconvertConfiguration.xsd.
Configuration#
All applications of the SUMO-suite handle configuration options the same way. These options are discussed at Basics/Using the Command Line Applications#Configuration Files.
| Option | Description |
|---|---|
| -c <FILE> --configuration-file <FILE> |
Loads the named config on startup |
| -C <FILE> --save-configuration <FILE> |
Saves current configuration into FILE |
| --save-configuration.relative <BOOL> | Enforce relative paths when saving the configuration; default: false |
| --save-template <FILE> | Saves a configuration template (empty) into FILE |
| --save-schema <FILE> | Saves the configuration schema into FILE |
| --save-commented <BOOL> | Adds comments to saved template, configuration, or schema; default: false |
Input#
| Option | Description |
|---|---|
| -s <FILE> --sumo-net-file <FILE> |
Read SUMO-net from FILE |
| -n <FILE> --node-files <FILE> |
Read XML-node defs from FILE |
| -e <FILE> --edge-files <FILE> |
Read XML-edge defs from FILE |
| -x <FILE> --connection-files <FILE> |
Read XML-connection defs from FILE |
| -i <FILE> --tllogic-files <FILE> |
Read XML-traffic light defs from FILE |
| -t <FILE> --type-files <FILE> |
Read XML-type defs from FILE |
| --ptstop-files <FILE> | Reads public transport stops from FILE |
| --ptline-files <FILE> | Reads public transport lines from FILE |
| --polygon-files <FILE> | Reads polygons from FILE for embedding in network where applicable |
| --shapefile-prefix <FILE> | Read shapefiles (ArcView, Tiger, ...) from files starting with 'FILE' |
| --dlr-navteq-prefix <FILE> | Read converted Navteq GDF data (unsplitted Elmar-network) from path 'FILE' |
| --osm-files <FILE> | Read OSM-network from path 'FILE(s)' |
| --opendrive-files <FILE> | Read OpenDRIVE-network from FILE |
| --visum-file <FILE> | Read VISUM-net from FILE |
| --vissim-file <FILE> | Read VISSIM-net from FILE |
| --robocup-dir <FILE> | Read RoboCup-net from DIR |
| --matsim-files <FILE> | Read MATSim-net from FILE |
| --itsumo-files <FILE> | Read ITSUMO-net from FILE |
| --heightmap.shapefiles <FILE> | Read heightmap from ArcGIS shapefile |
| --heightmap.geotiff <FILE> | Read heightmap from GeoTIFF |
Output#
| Option | Description |
|---|---|
| --write-license <BOOL> | Include license info into every output file; default: false |
| --write-metadata <BOOL> | Write parsable metadata (configuration etc.) instead of comments; default: false |
| --output-prefix <STRING> | 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; default: 2 |
| --precision.geo <INT> | Defines the number of digits after the comma for lon,lat output; default: 6 |
| --output.compression <STRING> | Defines the standard compression algorithm (currently only for parquet output) |
| --output.format <STRING> | Defines the standard output format if not derivable from the file name ('xml', 'csv', 'parquet'); default: xml |
| --output.column-header <STRING> | How to derive column headers from attribute names ('none', 'tag', 'auto', 'plain'); default: tag |
| --output.column-separator <STRING> | Separator in CSV output; default: ; |
| -H <BOOL> --human-readable-time <BOOL> |
Write time values as hour:minute:second or day:hour:minute:second rather than seconds; default: false |
| -o <FILE> --output-file <FILE> |
The generated net will be written to FILE |
| -p <FILE> --plain-output-prefix <FILE> |
Prefix of files to write plain xml nodes, edges and connections to |
| --plain-output.lanes <BOOL> | Write all lanes and their attributes even when they are not customized; default: false |
| --junctions.join-output <FILE> | Writes information about joined junctions to FILE (can be loaded as additional node-file to reproduce joins |
| --prefix <STRING> | Defines a prefix for edge and junction IDs |
| --prefix.junction <STRING> | Defines a prefix for junction IDs |
| --prefix.edge <STRING> | Defines a prefix for edge IDs |
| --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.version <STRING> | The dlr-navteq output format version to write; default: 6.5 |
| --dlr-navteq.precision <INT> | The network coordinates are written with the specified level of output precision; default: 2 |
| --output.street-names <BOOL> | Street names will be included in the output (if available); default: false |
| --output.original-names <BOOL> | Writes original names, if given, as parameter; default: false |
| --output.removed-nodes <BOOL> | Writes IDs of nodes remove with --geometry.remove into edge param; default: false |
| --street-sign-output <FILE> | Writes street signs as POIs to FILE |
| --ptstop-output <FILE> | Writes public transport stops to FILE |
| --ptline-output <FILE> | Writes public transport lines to FILE |
| --ptline-clean-up <BOOL> | Clean-up pt stops that are not served by any line; default: false |
| --parking-output <FILE> | Writes parking areas to FILE |
| --railway.topology.output <FILE> | Analyze topology of the railway network |
| --polygon-output <FILE> | Write shapes that are embedded in the network input and that are not supported by polyconvert (OpenDRIVE) |
| --opendrive-output.straight-threshold <FLOAT> | Builds parameterized curves whenever the angular change between straight segments exceeds FLOAT degrees; default: 1e-08 |
| --opendrive-output.lefthand-left <BOOL> | Write lanes in lefthand networks on the left side (positive indices); default: false |
| --opendrive-output.shape-match-dist <FLOAT> | Match loaded shapes to the closest edge within FLOAT and export as road objects; default: -1 |
Projection#
| Option | Description |
|---|---|
| --simple-projection <BOOL> | Uses a simple method for projection; default: false |
| --proj.scale <FLOAT> | Scaling factor for input coordinates; default: 1 |
| --proj.rotate <FLOAT> | Rotation (clockwise degrees) for input coordinates; default: 0 |
| --proj.utm <BOOL> | Determine the UTM zone (for a universal transversal mercator projection based on the WGS84 ellipsoid); default: false |
| --proj.dhdn <BOOL> | Determine the DHDN zone (for a transversal mercator projection based on the bessel ellipsoid, "Gauss-Krueger"); default: false |
| --proj <STRING> | Uses STR as proj.4 definition for projection; default: ! |
| --proj.inverse <BOOL> | Inverses projection; default: false |
| --proj.dhdnutm <BOOL> | Convert from Gauss-Krueger to UTM; default: false |
| --proj.plain-geo <BOOL> | Write geo coordinates in plain-xml; default: false |
Processing#
| Option | Description |
|---|---|
| --speed-in-kmh <BOOL> | vmax is parsed as given in km/h; default: false |
| --construction-date <STRING> | Use YYYY-MM-DD date to determine the readiness of features under construction |
| --flatten <BOOL> | Remove all z-data; default: false |
| --plain.extend-edge-shape <BOOL> | If edge shapes do not end at the node positions, extend them; default: false |
| --numerical-ids <BOOL> | Remaps alphanumerical IDs of nodes and edges to ensure that all IDs are integers; default: false |
| --numerical-ids.node-start <INT> | Remaps IDs of nodes to integers starting at INT; default: 2147483647 |
| --numerical-ids.edge-start <INT> | Remaps IDs of edges to integers starting at INT; default: 2147483647 |
| --reserved-ids <FILE> | Ensures that generated ids do not included any of the typed IDs from FILE (sumo-gui selection file format) |
| --kept-ids <FILE> | Ensures that objects with typed IDs from FILE (sumo-gui selection file format) are not renamed |
| --dismiss-vclasses <BOOL> | Removes vehicle class restrictions from imported edges; default: false |
| --geometry.split <BOOL> | Splits edges across geometry nodes; default: false |
| -R <BOOL> --geometry.remove <BOOL> |
Replace nodes which only define edge geometry by geometry points (joins edges); default: false |
| --geometry.remove.keep-edges.explicit <STRING[ ]> | 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.keep-ptstops <BOOL> | Ensure that edges with public transport stops are not modified; default: false |
| --geometry.remove.min-length <FLOAT> | Allow merging edges with differing attributes when their length is below min-length; default: 0 |
| --geometry.remove.width-tolerance <FLOAT> | Allow merging edges with differing lane widths if the difference is below FLOAT; default: 0 |
| --geometry.remove.max-junction-size <FLOAT> | Prevent removal of junctions with a size above FLOAT as defined by custom edge endpoints; default: -1 |
| --geometry.max-segment-length <FLOAT> | splits geometry to restrict segment length; default: 0 |
| --geometry.min-dist <FLOAT> | reduces too similar geometry points; default: -1 |
| --geometry.max-angle <FLOAT> | Warn about edge geometries with an angle above DEGREES in successive segments; default: 99 |
| --geometry.max-angle.fix <BOOL> | Straighten edge geometries with an angle above max-angle successive segments; default: false |
| --geometry.min-radius <FLOAT> | Warn about edge geometries with a turning radius less than METERS at the start or end; default: 9 |
| --geometry.min-radius.fix <BOOL> | Straighten edge geometries to avoid turning radii less than geometry.min-radius; default: false |
| --geometry.min-radius.fix.railways <BOOL> | Straighten edge geometries to avoid turning radii less than geometry.min-radius (only railways); default: true |
| --geometry.junction-mismatch-threshold <FLOAT> | Warn if the junction shape is to far away from the original node position; default: 20 |
| --geometry.check-overlap <FLOAT> | Warn if edges overlap by more than the given threshold value; default: 0 |
| --geometry.check-overlap.vertical-threshold <FLOAT> | Ignore overlapping edges if they are separated vertically by the given threshold.; default: 4 |
| --geometry.avoid-overlap <BOOL> | Modify edge geometries to avoid overlap at junctions; default: true |
| --join-lanes <BOOL> | join adjacent lanes that have the same permissions and which do not admit lane-changing (sidewalks and disallowed lanes); default: false |
| --ptline.match-dist <FLOAT> | Matches stops outside the road network to the referencing pt line when below the given distance; default: 100 |
| --ptstop-output.no-bidi <BOOL> | Skips automatic generation of stops on the bidi-edge of a loaded stop; default: false |
| --geometry.max-grade <FLOAT> | Warn about edge geometries with a grade in % above FLOAT.; default: 10 |
| --geometry.max-grade.fix <BOOL> | Smooth edge geometries with a grade above the warning threshold.; default: true |
| --offset.disable-normalization <BOOL> | Turn off normalizing node positions; default: false |
| --offset.x <FLOAT> | Adds FLOAT to net x-positions; default: 0 |
| --offset.y <FLOAT> | Adds FLOAT to net y-positions; default: 0 |
| --offset.z <FLOAT> | Adds FLOAT to net z-positions; default: 0 |
| --flip-y-axis <BOOL> | Flips the y-coordinate along zero; default: false |
| --roundabouts.guess <BOOL> | Enable roundabout-guessing; default: true |
| --roundabouts.guess.max-length <FLOAT> | Structures with a circumference above FLOAT threshold are not classified as roundabout; default: 3500 |
| --roundabouts.visibility-distance <FLOAT> | Default visibility when approaching a roundabout; default: 9 |
| --opposites.guess <BOOL> | Enable guessing of opposite direction lanes usable for overtaking; default: false |
| --opposites.guess.fix-lengths <BOOL> | Ensure that opposite edges have the same length; default: true |
| --fringe.guess <BOOL> | Enable guessing of network fringe nodes; default: false |
| --fringe.guess.speed-threshold <FLOAT> | Guess disconnected edges above the given speed as outer fringe; default: 13.8889 |
| --lefthand <BOOL> | Assumes left-hand traffic on the network; default: false |
| --edges.join <BOOL> | Merges edges which connect the same nodes and are close to each other (recommended for VISSIM import); default: false |
| --speed.offset <FLOAT> | Modifies all edge speeds by adding FLOAT; default: 0 |
| --speed.factor <FLOAT> | Modifies all edge speeds by multiplying by FLOAT; default: 1 |
| --speed.minimum <FLOAT> | Modifies all edge speeds to at least FLOAT; default: 0 |
| --edges.join-tram-dist <FLOAT> | Joins tram edges into road lanes with similar geometry (within FLOAT distance); default: -1 |
Building Defaults#
| Option | Description |
|---|---|
| -L <INT> --default.lanenumber <INT> |
The default number of lanes in an edge; default: 1 |
| --default.lanewidth <FLOAT> | The default width of lanes; default: -1 |
| --default.spreadtype <STRING> | The default method for computing lane shapes from edge shapes; default: right |
| -S <FLOAT> --default.speed <FLOAT> |
The default speed on an edge (in m/s); default: 13.89 |
| --default.friction <FLOAT> | The default friction on an edge; default: 1 |
| -P <INT> --default.priority <INT> |
The default priority of an edge; default: -1 |
| --default.type <STRING> | The default edge type |
| --default.sidewalk-width <FLOAT> | The default width of added sidewalks; default: 2 |
| --default.bikelane-width <FLOAT> | The default width of added bike lanes; default: 1 |
| --default.crossing-width <FLOAT> | The default width of a pedestrian crossing; default: 4 |
| --default.crossing-speed <FLOAT> | The default speed 'limit' on a pedestrian crossing (in m/s); default: 2.78 |
| --default.walkingarea-speed <FLOAT> | The default speed 'limit' on a pedestrian walkingarea (in m/s); default: 2.78 |
| --default.allow <STRING> | The default for allowed vehicle classes |
| --default.disallow <STRING> | The default for disallowed vehicle classes |
| --default.junctions.keep-clear <BOOL> | Whether junctions should be kept clear by default; default: true |
| --default.junctions.radius <FLOAT> | The default turning radius of intersections; default: 4 |
| --default.connection-length <FLOAT> | The default length when overriding connection lengths; default: -1 |
| --default.connection.cont-pos <FLOAT> | Whether/where connections should have an internal junction; default: -1 |
| --default.right-of-way <STRING> | The default algorithm for computing right of way rules ('default', 'edgePriority'); default: default |
Tls Building#
| Option | Description |
|---|---|
| --tls.discard-loaded <BOOL> | Does not instantiate traffic lights loaded from other formats than plain-XML; default: false |
| --tls.discard-simple <BOOL> | Does not instantiate traffic lights at geometry-like nodes loaded from other formats than plain-XML; default: false |
| --tls.set <STRING[ ]> | Interprets STR[] as list of junctions to be controlled by TLS |
| --tls.unset <STRING[ ]> | Interprets STR[] as list of junctions to be not controlled by TLS |
| --tls.guess <BOOL> | Turns on TLS guessing; default: false |
| --tls.guess.threshold <FLOAT> | Sets minimum value for the sum of all incoming lane speeds when guessing TLS; default: 69.4444 |
| --tls.taz-nodes <BOOL> | Sets district nodes as tls-controlled; default: false |
| --tls.guess.joining <BOOL> | Includes node clusters into guess; default: false |
| --tls.join <BOOL> | Tries to cluster tls-controlled nodes; default: false |
| --tls.join-dist <FLOAT> | Determines the maximal distance for joining traffic lights (defaults to 20); default: 20 |
| --tls.join-exclude <STRING[ ]> | Interprets STR[] as list of tls ids to exclude from joining |
| --tls.uncontrolled-within <BOOL> | 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; default: false |
| --tls.ignore-internal-junction-jam <BOOL> | Do not build mutually conflicting response matrix, potentially ignoring vehicles that are stuck at an internal junction when their phase has ended; default: false |
| --tls.guess-signals <BOOL> | Interprets tls nodes surrounding an intersection as signal positions for a larger TLS. This is typical pattern for OSM-derived networks; default: false |
| --tls.guess-signals.dist <FLOAT> | Distance for interpreting nodes as signal locations; default: 25 |
| --tls.guess-signals.slack <INT> | Number of uncontrolled entry edges to accept and still consider the central node as a traffic light; default: 0 |
| --tls.cycle.time <INT> | Use INT as cycle duration; default: 90 |
| --tls.green.time <INT> | Use INT as green phase duration; default: 31 |
| -D <FLOAT> --tls.yellow.min-decel <FLOAT> |
Defines smallest vehicle deceleration; default: 3 |
| --tls.yellow.patch-small <BOOL> | Given yellow times are patched even if being too short; default: false |
| --tls.yellow.time <INT> | Set INT as fixed time for yellow phase durations; default: -1 |
| --tls.red.time <INT> | Set INT as fixed time for red phase duration at traffic lights that do not have a conflicting flow; default: 5 |
| --tls.allred.time <INT> | Set INT as fixed time for intermediate red phase after every switch; default: 0 |
| --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; default: 19.44 |
| --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; default: 6 |
| --tls.nema.vehExt <INT> | Set INT as fixed time for intermediate vehext phase after every switch; default: 2 |
| --tls.nema.yellow <INT> | Set INT as fixed time for intermediate NEMA yellow phase after every switch; default: 3 |
| --tls.nema.red <INT> | Set INT as fixed time for intermediate NEMA red phase after every switch; default: 2 |
| --tls.crossing-min.time <INT> | Use INT as minimum green duration for pedestrian crossings (s).; default: 4 |
| --tls.crossing-clearance.time <INT> | Use INT as clearance time for pedestrian crossings (s).; default: 5 |
| --tls.scramble.time <INT> | Use INT as green phase duration for pedestrian scramble phase (s).; default: 5 |
| --tls.half-offset <STRING[ ]> | TLSs in STR[] will be shifted by half-phase |
| --tls.quarter-offset <STRING[ ]> | TLSs in STR[] will be shifted by quarter-phase |
| --tls.default-type <STRING> | TLSs with unspecified type will use STR as their algorithm; default: static |
| --tls.layout <STRING> | Set phase layout four grouping opposite directions or grouping all movements for one incoming edge ['opposites', 'incoming']; default: opposites |
| --tls.no-mixed <BOOL> | Avoid phases with green and red signals for different connections from the same lane; default: false |
| --tls.min-dur <INT> | Default minimum phase duration for traffic lights with variable phase length; default: 5 |
| --tls.max-dur <INT> | Default maximum phase duration for traffic lights with variable phase length; default: 50 |
| --tls.group-signals <BOOL> | Assign the same tls link index to connections that share the same states; default: false |
| --tls.ungroup-signals <BOOL> | Assign a distinct tls link index to every connection; default: false |
| --tls.rebuild <BOOL> | rebuild all traffic light plans in the network; default: false |
Ramp Guessing#
| Option | Description |
|---|---|
| --ramps.guess <BOOL> | Enable ramp-guessing; default: false |
| --ramps.guess-acceleration-lanes <BOOL> | Guess on-ramps and mark acceleration lanes if they exist but do not add new lanes; default: true |
| --ramps.max-ramp-speed <FLOAT> | Treat edges with speed > FLOAT as no ramps; default: -1 |
| --ramps.min-highway-speed <FLOAT> | Treat edges with speed < FLOAT as no highways; default: 21.9444 |
| --ramps.ramp-length <FLOAT> | Use FLOAT as ramp-length; default: 100 |
| --ramps.min-weave-length <FLOAT> | Use FLOAT as minimum ramp-length; default: 50 |
| --ramps.set <STRING[ ]> | Tries to handle the given edges as ramps |
| --ramps.unset <STRING[ ]> | Do not consider the given edges as ramps |
| --ramps.no-split <BOOL> | Avoids edge splitting; default: false |
Edge Removal#
| Option | Description |
|---|---|
| --keep-edges.min-speed <FLOAT> | Only keep edges with speed in meters/second > FLOAT; default: -1 |
| --remove-edges.explicit <STRING[ ]> | Remove edges in STR[] |
| --keep-edges.explicit <STRING[ ]> | 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.postload <BOOL> | Remove edges after loading, patching and joining; default: false |
| --keep-edges.in-boundary <STRING[ ]> | Only keep edges which are located within the given boundary (given either as CARTESIAN corner coordinates |
| --keep-edges.in-geo-boundary <STRING[ ]> | Only keep edges which are located within the given boundary (given either as GEODETIC corner coordinates |
| --keep-edges.by-vclass <STRING[ ]> | Only keep edges which allow one of the vclasses in STR[] |
| --remove-edges.by-vclass <STRING[ ]> | Remove edges which allow only vclasses from STR[] |
| --keep-edges.by-type <STRING[ ]> | Only keep edges where type is in STR[] |
| --keep-edges.components <INT> | Only keep the INT largest weakly connected components; default: 0 |
| --remove-edges.by-type <STRING[ ]> | Remove edges where type is in STR[] |
| --remove-edges.isolated <BOOL> | Removes isolated edges; default: false |
| --keep-lanes.min-width <FLOAT> | Only keep lanes with width in meters > FLOAT; default: 0.01 |
Unregulated Nodes#
| Option | Description |
|---|---|
| --keep-nodes-unregulated <BOOL> | All nodes will be unregulated; default: false |
| --keep-nodes-unregulated.explicit <STRING[ ]> | Do not regulate nodes in STR[] |
| --keep-nodes-unregulated.district-nodes <BOOL> | Do not regulate district nodes; default: false |
Junctions#
| Option | Description |
|---|---|
| --junctions.right-before-left.speed-threshold <FLOAT> | Allow building right-before-left junctions when the incoming edge speeds are below FLOAT (m/s); default: 13.6111 |
| --junctions.left-before-right <BOOL> | Build left-before-right junctions instead of right-before-left junctions; default: false |
| --no-internal-links <BOOL> | Omits internal links; default: false |
| --no-turnarounds <BOOL> | Disables building turnarounds; default: false |
| --no-turnarounds.tls <BOOL> | Disables building turnarounds at tls-controlled junctions; default: false |
| --no-turnarounds.geometry <BOOL> | Disables building turnarounds at geometry-like junctions; default: true |
| --no-turnarounds.except-deadend <BOOL> | Disables building turnarounds except at dead end junctions; default: false |
| --no-turnarounds.except-turnlane <BOOL> | Disables building turnarounds except at at junctions with a dedicated turning lane; default: false |
| --no-turnarounds.fringe <BOOL> | Disables building turnarounds at fringe junctions; default: false |
| --no-left-connections <BOOL> | Disables building connections to left; default: false |
| --junctions.join <BOOL> | Joins junctions that are close to each other (recommended for OSM import); default: false |
| --junctions.join-dist <FLOAT> | Determines the maximal distance for joining junctions (defaults to 10); default: 10 |
| --junctions.join.parallel-threshold <FLOAT> | The angular threshold in degress for rejection of parallel edges when joining junctions; default: 30 |
| --junctions.join-exclude <STRING[ ]> | Interprets STR[] as list of junctions to exclude from joining |
| --junctions.join-same <FLOAT> | Joins junctions that have similar coordinates even if not connected; default: -1 |
| --junctions.attach-removed <FLOAT> | Attach junction to the closest edge within FLOAT distance that has it's id in param removedNodeIDs (for joining networks); default: -1 |
| --max-join-ids <INT> | Abbreviate junction or TLS id if it joins more than INT junctions; default: 4 |
| --junctions.corner-detail <INT> | Generate INT intermediate points to smooth out intersection corners; default: 5 |
| --junctions.internal-link-detail <INT> | Generate INT intermediate points to smooth out lanes within the intersection; default: 5 |
| --junctions.scurve-stretch <FLOAT> | Generate longer intersections to allow for smooth s-curves when the number of lanes changes; default: 0 |
| --junctions.join-turns <BOOL> | 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; default: false |
| --junctions.limit-turn-speed <FLOAT> | Limits speed on junctions to an average lateral acceleration of at most FLOAT (m/s^2); default: 5.5 |
| --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.; default: 15 |
| --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.; default: 35 |
| --junctions.limit-turn-speed.warn.straight <FLOAT> | Warn about turn speed limits that reduce the speed of straight connections by more than FLOAT; default: 5 |
| --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; default: 22 |
| --junctions.small-radius <FLOAT> | Default radius for junctions that do not require wide vehicle turns; default: 1.5 |
| --junctions.higher-speed <BOOL> | Use maximum value of incoming and outgoing edge speed on junction instead of average; default: false |
| --junctions.minimal-shape <BOOL> | Build junctions with minimal shapes (ignoring edge overlap); default: false |
| --junctions.endpoint-shape <BOOL> | Build junction shapes based on edge endpoints (ignoring edge overlap); default: false |
| --internal-junctions.vehicle-width <FLOAT> | Assumed vehicle width for computing internal junction positions; default: 1.8 |
| --rectangular-lane-cut <BOOL> | Forces rectangular cuts between lanes and intersections; default: false |
| --check-lane-foes.roundabout <BOOL> | Allow driving onto a multi-lane road if there are foes on other lanes (at roundabouts); default: true |
| --check-lane-foes.all <BOOL> | Allow driving onto a multi-lane road if there are foes on other lanes (everywhere); default: false |
Pedestrian#
| Option | Description |
|---|---|
| --sidewalks.guess <BOOL> | Guess pedestrian sidewalks based on edge speed; default: false |
| --sidewalks.guess.max-speed <FLOAT> | Add sidewalks for edges with a speed equal or below the given limit; default: 13.89 |
| --sidewalks.guess.min-speed <FLOAT> | Add sidewalks for edges with a speed above the given limit; default: 5.8 |
| --sidewalks.guess.from-permissions <BOOL> | Add sidewalks for edges that allow pedestrians on any of their lanes regardless of speed; default: false |
| --sidewalks.guess.exclude <STRING[ ]> | Do not guess sidewalks for the given list of edges |
| --crossings.guess <BOOL> | Guess pedestrian crossings based on the presence of sidewalks; default: false |
| --crossings.guess.speed-threshold <FLOAT> | At uncontrolled nodes, do not build crossings across edges with a speed above the threshold; default: 13.89 |
| --crossings.guess.roundabout-priority <BOOL> | Give priority to guessed crossings at roundabouts; default: true |
| --walkingareas <BOOL> | Always build walking areas even if there are no crossings; default: false |
| --walkingareas.join-dist <FLOAT> | Do not create a walkingarea between sidewalks that are connected by a pedestrian junction within FLOAT; default: 15 |
Bicycle#
| Option | Description |
|---|---|
| --bikelanes.guess <BOOL> | Guess bike lanes based on edge speed; default: false |
| --bikelanes.guess.max-speed <FLOAT> | Add bike lanes for edges with a speed equal or below the given limit; default: 22.22 |
| --bikelanes.guess.min-speed <FLOAT> | Add bike lanes for edges with a speed above the given limit; default: 5.8 |
| --bikelanes.guess.from-permissions <BOOL> | Add bike lanes for edges that allow bicycles on any of their lanes regardless of speed; default: false |
| --bikelanes.guess.exclude <STRING[ ]> | Do not guess bikelanes for the given list of edges |
Railway#
| Option | Description |
|---|---|
| --railway.signals.discard <BOOL> | Discard all railway signal information loaded from other formats than plain-xml; default: false |
| --railway.topology.repair <BOOL> | Repair topology of the railway network; default: false |
| --railway.topology.repair.minimal <BOOL> | Repair topology of the railway network just enough to let loaded public transport lines to work; default: false |
| --railway.topology.repair.connect-straight <BOOL> | Allow bidirectional rail use wherever rails with opposite directions meet at a straight angle; default: false |
| --railway.topology.repair.stop-turn <BOOL> | Add turn-around connections at all loaded stops.; default: false |
| --railway.topology.repair.bidi-penalty <FLOAT> | Penalty factor for adding new bidi edges to connect public transport stops; default: 1.2 |
| --railway.topology.all-bidi <BOOL> | Make all rails usable in both direction; default: false |
| --railway.topology.all-bidi.input-file <FILE> | Make all rails edge ids from FILE usable in both direction |
| --railway.topology.direction-priority <BOOL> | Set edge priority values based on estimated main direction; default: false |
| --railway.topology.extend-priority <BOOL> | Extend loaded edge priority values based on estimated main direction; default: false |
| --railway.geometry.straighten <BOOL> | Move junctions to straighten a sequence of rail edges; default: false |
| --railway.signal.guess.by-stops <BOOL> | Guess signals that guard public transport stops; default: false |
| --railway.signal.permit-unsignalized <STRING[ ]> | List rail classes that may run without rail signals; default: tram,cable_car |
| --railway.access-distance <FLOAT> | The search radius for finding suitable road accesses for rail stops; default: 150 |
| --railway.max-accesses <INT> | The maximum road accesses registered per rail stops; default: 5 |
| --railway.access-factor <FLOAT> | The walking length of the access is computed as air-line distance multiplied by FLOAT; default: 1.5 |
Formats#
| Option | Description |
|---|---|
| --discard-params <STRING[ ]> | Remove the list of keys from all params |
| --ignore-change-restrictions <STRING[ ]> | List vehicle classes that may ignore lane changing restrictions ('all' discards all restrictions); default: authority |
| --ignore-widths <BOOL> | Whether lane widths shall be ignored.; default: false |
| --osm.skip-duplicates-check <BOOL> | Skips the check for duplicate nodes and edges; default: false |
| --osm.elevation <BOOL> | Imports elevation data; default: false |
| --osm.layer-elevation <FLOAT> | Reconstruct (relative) elevation based on layer data. Each layer is raised by FLOAT m; default: 0 |
| --osm.layer-elevation.max-grade <FLOAT> | Maximum grade threshold in % at 50km/h when reconstructing elevation based on layer data. The value is scaled according to road speed.; default: 10 |
| --osm.oneway-spread-right <BOOL> | Whether one-way roads should be spread to the side instead of centered; default: false |
| --osm.lane-access <BOOL> | Import lane-specific access restrictions; default: false |
| --osm.bike-access <BOOL> | Import bike lanes and fix directions and permissions on bike paths; default: false |
| --osm.sidewalks <BOOL> | Import sidewalks; default: false |
| --osm.oneway-reverse-sidewalk <BOOL> | Default to building two sidewalks on oneway streets (may affect divided roads); default: false |
| --osm.crossings <BOOL> | Import crossings; default: false |
| --osm.turn-lanes <BOOL> | Import turning arrows from OSM to help with connection building; default: false |
| --osm.stop-output.length <FLOAT> | The default length of a public transport stop in FLOAT m; default: 25 |
| --osm.stop-output.length.bus <FLOAT> | The default length of a bus stop in FLOAT m; default: 15 |
| --osm.stop-output.length.tram <FLOAT> | The default length of a tram stop in FLOAT m; default: 25 |
| --osm.stop-output.length.train <FLOAT> | The default length of a train stop in FLOAT m; default: 200 |
| --osm.railsignals <STRING[ ]> | Specify custom rules for importing railway signals; default: DEFAULT |
| --osm.all-attributes <BOOL> | Whether additional attributes shall be imported; default: false |
| --osm.extra-attributes <STRING[ ]> | List of additional attributes that shall be imported from OSM via osm.all-attributes (set 'all' to import all); default: all |
| --osm.speedlimit-none <FLOAT> | The speed limit to be set when there is no actual speed limit in reality; default: 39.4444 |
| --osm.annotate-defaults <BOOL> | Whether edges shoulds carry information on the usage of typemap defaults; default: false |
| --matsim.keep-length <BOOL> | The edge lengths given in the MATSim-file will be kept; default: false |
| --matsim.lanes-from-capacity <BOOL> | The lane number will be computed from the capacity; default: false |
| --shapefile.street-id <STRING> | Read edge ids from column STR |
| --shapefile.from-id <STRING> | Read from-node ids from column STR |
| --shapefile.to-id <STRING> | Read to-node ids from column STR |
| --shapefile.type-id <STRING> | Read type ids from column STR |
| --shapefile.laneNumber <STRING> | Read lane number from column STR |
| --shapefile.speed <STRING> | Read speed from column STR |
| --shapefile.length <STRING> | Read custom edge length from column STR |
| --shapefile.width <STRING> | Read total edge width from column STR |
| --shapefile.name <STRING> | Read (non-unique) name from column STR |
| --shapefile.node-join-dist <FLOAT> | Distance threshold for determining whether distinct shapes are connected (used when from-id and to-id are not available); default: 0 |
| --shapefile.add-params <STRING[ ]> | Add the list of field names as edge params |
| --shapefile.use-defaults-on-failure <BOOL> | Uses edge type defaults on problems; default: false |
| --shapefile.all-bidirectional <BOOL> | Insert edges in both directions; default: false |
| --shapefile.guess-projection <BOOL> | Guess the proper projection; default: false |
| --shapefile.traditional-axis-mapping <BOOL> | Use traditional axis order (lon, lat); default: false |
| --dlr-navteq.tolerant-permissions <BOOL> | Allow more vehicle classes by default; default: false |
| --dlr-navteq.keep-length <BOOL> | The edge lengths given in the DLR Navteq-file will be kept; default: false |
| --vissim.join-distance <FLOAT> | Structure join offset; default: 5 |
| --vissim.default-speed <FLOAT> | Use FLOAT as default speed; default: 50 |
| --vissim.speed-norm <FLOAT> | Factor for edge velocity; default: 1 |
| --vissim.report-unset-speeds <BOOL> | Writes lanes without an explicit speed set; default: false |
| --visum.language-file <FILE> | Load language mappings from FILE |
| --visum.use-type-priority <BOOL> | Uses priorities from types; default: false |
| --visum.use-type-laneno <BOOL> | Uses lane numbers from types; default: false |
| --visum.use-type-speed <BOOL> | Uses speeds from types; default: false |
| --visum.connector-speeds <FLOAT> | Sets connector speed; default: 100 |
| --visum.connectors-lane-number <INT> | Sets connector lane number; default: 3 |
| --visum.no-connectors <BOOL> | Excludes connectors; default: true |
| --visum.recompute-lane-number <BOOL> | Computes the number of lanes from the edges' capacities; default: false |
| --visum.verbose-warnings <BOOL> | Prints all warnings, some of which are due to VISUM misbehaviour; default: false |
| --visum.lanes-from-capacity.norm <FLOAT> | The factor for flow to no. lanes conversion; default: 1800 |
| --opendrive.import-all-lanes <BOOL> | Imports all lane types; default: false |
| --opendrive.curve-resolution <FLOAT> | The geometry resolution in m when importing curved geometries as line segments.; default: 2 |
| --opendrive.advance-stopline <FLOAT> | Allow stop lines to be built beyond the start of the junction if the geometries allow so; default: 0 |
| --opendrive.min-width <FLOAT> | The minimum lane width for determining start or end of variable-width lanes; default: 1.8 |
| --opendrive.internal-shapes <BOOL> | Import internal lane shapes; default: false |
| --opendrive.position-ids <BOOL> | Sets edge-id based on road-id and offset in m (legacy); default: false |
| --opendrive.lane-shapes <BOOL> | Use custom lane shapes to compensate discarded lane types; default: false |
| --opendrive.signal-groups <BOOL> | Use the OpenDRIVE controller information for the generated signal program; default: false |
| --opendrive.ignore-misplaced-signals <BOOL> | Ignore traffic signals which do not control any driving lane; default: false |
Report#
| Option | Description |
|---|---|
| -v <BOOL> --verbose <BOOL> |
Switches to verbose output; default: false |
| --print-options <BOOL> | Prints option values before processing; default: false |
| -? <BOOL> --help <BOOL> |
Prints this screen or selected topics; default: false |
| -V <BOOL> --version <BOOL> |
Prints the current version; default: false |
| -X <STRING> --xml-validation <STRING> |
Set schema validation scheme of XML inputs ("never", "local", "auto" or "always"); default: local |
| --xml-validation.net <STRING> | Set schema validation scheme of SUMO network inputs ("never", "local", "auto" or "always"); default: never |
| -W <BOOL> --no-warnings <BOOL> |
Disables output of warnings; default: false |
| --aggregate-warnings <INT> | Aggregate warnings of the same type whenever more than INT occur; default: -1 |
| -l <FILE> --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 |
| --log.timestamps <BOOL> | Writes timestamps in front of all messages; default: false |
| --log.processid <BOOL> | Writes process ID in front of all messages; default: false |
| --language <STRING> | Language to use in messages; default: C |
| --ignore-errors <BOOL> | Continue on broken input; default: false |
| --ignore-errors.connections <BOOL> | Continue on invalid connections; default: false |
| --show-errors.connections-first-try <BOOL> | Show errors in connections at parsing; default: false |
| --ignore-errors.edge-type <BOOL> | Continue on unknown edge types; default: false |
Random Number#
| Option | Description |
|---|---|
| --random <BOOL> | Initialises the random number generator with the current system time; default: false |
| --seed <INT> | Initialises the random number generator with the given value; default: 23423 |
Lefthand Networks#
By default, netconvert assumes networks to follow right-hand traffic rules. When importing importing/building a network for a jurisdiction with left-hand traffic, the option --lefthand must be set.
Note, that this also influences geometries if the edges which make up a two-directional road are defined using the road-center-line as geometry. In right-hand networks the lane shapes will be placed to the right of the center line whereas in left-hand networks they will be placed to the left. This means that for some edges, the same input geometries can be used to build right-hand as well as left-hand networks. However, if the edge geometries are defined using the center-line of the directional edge (attribute {{XML|1=spreadType="center"/>) then the geometries are only usable for a specific type of jurisdiction (networks with the wrong setting for --lefthand will look strange).
Warnings during Import#
Several types of warnings and errors with different levels of severity may be issued during network building.
| Message | Explanation | Recommended Action |
|---|---|---|
| Error: Could not set connection ... | A connection definition could not be applied because the lanes do not exist or do not share a common junction | Check your input files |
| Warning: Removed a road without junctions ... | Isolated road is removed from the network | |
| Warning: Not joining junctions ... because the cluster is too complex | The heuristic for option --junctions.join cannot handle a complex junction | Inspect the mentioned nodes and provide a join-description manually. |
| Warning: Found angle of ... degrees | An edge has an unusually sharp turn somewhere in the middle | Inspect the mentioned edge for correctness. Warning may be suppressed using option --geometry.max-angle. |
| Warning: Warning: Found sharp turn with radius ... | An edge has an unusually sharp turn where entering or leaving an intersection | Inspect the mentioned edge for correctness. Problems may be corrected automatically by setting option --geometry.min-radius.fix. Warning may be suppressed by setting option --geometry.min-radius. |
| Warning: Intersecting left turns at junction ... | The junction is very small so that left-turning vehicles from opposite directions obstruct each other | Inspect the mentioned junction shape for correctness. Warning is not critical because the right-of-way model will be adapted to the conflict. |
| Warning: Lane '...' is not connected from any incoming edge at junction '...'. | The connection layout at the junction is suspicious | Inspect the mentioned junction's connections for correctness. |
| Warning: Lane '...' is not connected to outgoing edges at junction '...'. | The connection layout at the junction is suspicious | Inspect the mentioned junction's connections for correctness. |
| Warning: Edge / Connection '...' has a grade of ...%. | There is a sharp jump in elevation in the edge or connection geometry | Inspect the z values for correctness |
| Warning: Speed of ... connection '...' reduced by ... due to turning radius of ... (length=... angle=...) | There is an unusually sharp turn relative to the road speed | Check edge speed limit and junction geometry for correctness. Warning may be suppressed by setting higher threshold via option --junctions.limit-turn-speed.warn.turn <FLOAT>, --junctions.limit-turn-speed.warn.straight <FLOAT>. |
| Warning: For node '...': could not compute shape. | The shape of the junction area could not be computed | Inspect the mentioned node and maybe provide a custom node shape. |
| Warning: Junction shape for '...' has distance ... to its given position. | The shape and location of the junction area is suspicious. | Inspect the mentioned node and maybe provide a custom node shape. Warning may be suppressed by setting option --geometry.junction-mismatch-threshold. |
| Warning: The traffic light '...' does not control any links; it will not be build. | The traffic light at the given node sits at a junction without connections or the node was removed altogether. | Inspect the mentioned node if it still exists. Can usually be ignored. |
| Warning: Splitting vector close to end ... | A geometry computation somewhere deep in the code is suspicious. Often related to computation of internal lanes at intersections with bad shape. | Ignore for lack of sufficient information (or try to narrow down the problem by building smaller sections of the network). |
