This script compares two .net.xml files. The call

python tools/net/ diff

will produce 4 plain-XML network files:

  • diff.nod.xml
  • diff.edg.xml
  • diff.con.xml
  • diff.tll.xml

These files contain groups of xml elements (i.e. nodes) that have been deleted, created, or modified and can be used to investigate differences between the two networks A and B. Furthermore, these files can be used to maintain change-sets for making repeatable modifications:

netconvert --sumo-net-file -n diff.nod.xml -e diff.edg.xml -x diff.con.xml -i diff.tll.xml -o

The above call can be used to recreate network B based on A and the recorded change-set. Note, that for any modified elements (i.e. modified speed limit for an edge), the file diff.edg.xml only contains to modified attributes.

A typical use case for is this:

  1. Import a network from OSM (call this
  2. Make some modifications with netedit (save this under the new name
  3. Use to create the diff-files
  4. At a later date, re-import the OSM network (with a newer OSM file, a new version of netconvert or different options)
  5. Re-apply the diff-files to avoid repeating manual corrections with netedit

patching on import#

If the patch file is to be applied during the initial network import (e.g. from OSM), the netdiff option -i must be set. Due to the way connections are guessed during network import, all connections for an edge must be included in the patch file if any of them were changed. This is accomplished by setting -i (--patch-on-import).

patching a network different from the original#

Sometimes it may be useful to apply the difference between networks A and B to another network C than differs slightly from A. In this case it may be useful to only consider some of the changes (i.e. only created elements).

If only the newly created elements in B (relative to A) shall be considered, open each of the difference files (ie. diff.edg.xml, diff.nod.xml, diff.con.xml, diff.tll.xml) and keep only the elements below the heading

<!-- Created Elements -->"

This way the patch should be applicable to network C regardless of how it differs from the original A.

Sometimes, errors may occur due to inconsistent connections or traffic lights. In this case, it may be useful to only update C with 'diff.nod.xml and 'diff.edg.xml' and let netconvert guess the respective connections and traffic lights.

In the end all regions where the area of C and B borders each other should be checked manually for consistency.

This script generates additional connections for roundabouts from a given network. The following connections are added:

  • vehicles can stay inside of the roundabout on every lane.
  • vehicles can leave a roundabout even if they are driving on an inner lane if there are enough outgoing lanes.


python tools/net/ <net-file>

This creates the output file roundabout-connection.con.xml, where the input network is <net-file>.

This tool checks the network (first parameter) for weak connectivity (whether there is a route from every node to every other node, regardless of edge direction) and prints the connected components if not.

Additionally, you may run this script to discover which edges are reachable from a particular edge.

python tools/net/ <net-file> --source <edge_id> --selection-output selection.txt

This will create a file called selection.txt which can be loaded in sumo-gui to visualize the portion of the network reachable from <edge_id>. To visualize the selection, you must load the file via Edit->Edit chosen. Then, you need to enable edge coloring by selection status in the view settings dialog Street->Color by: selection. The reachable portion of the network will be colored differently from the unreachable portion which is usually sufficient to figure out network modeling errors.

The options can be shortened to -s <edge_id> for source edges and -o <filename> for selection output.

Using option --destination <edge_id>, or -d <edge_id>, lists edges which can reach the given edge. By adding the option --vclass <vClass>, or -l <vClass>, the check becomes vClass-aware.

The option --component-output <filename>, or -c <filename>, writes all the identified components and their constituent edges to the specified file. The option --results-output <filename>, or -r <filename>, writes the whole network summary of largest component percentage coverage and component edge count distribution to the specified file.

The --component-output and --results-output options are not compatible with the --destination or --source options.

Use the option --help for the latest version information. and

Both tools apply the given offset to the geometrical information of edges or nodes given in the input file. The results are written into <XMLEDGES>.mod.xml or <XMLNODES>.mod.xml, respectively.

python tools/net/ <XMLEDGES-FILE> <X-OFFSET> <Y-OFFSET>
python tools/net/ <XMLNODES-FILE> <X-OFFSET> <Y-OFFSET>
  • <XMLEDGES-FILE>/<XMLNODES-FILE>: The edges/nodes file whose content shall be shifted
  • <X-OFFSET>: The x-offset to apply
  • <Y-OFFSET>: The y-offset to apply

Reads edge id replacements from "edgemap.txt"; the format of this file is:


Reads the given connections file <CONNECTIONS-FILE> and replaces old edge names by the new ones. The result is written to <CONNECTIONS-FILE>.mod.xml

python tools/net/ <CONNECTIONS-FILE>
  • <OLD_EDGE_ID>: Id of an edge as used within <CONNECTIONS-FILE>
  • <NEW_EDGE_ID>: Id of the edge to use instead
  • <CONNECTIONS-FILE>: The connections file to change

converts '.net.xml' road geometries to KML format.

python tools/net/ -n <net-file> -o output.kml

By default, normal edge geometries will be exported. This can be changed with options

  • --lanes: write lane geometries
  • --internal: write junction-internal edges or lanes

converts '.net.xml' road geometries to GeoJSON format.

python tools/net/ -n <net-file> -o output.geojson

By default, normal edge geometries will be exported. This can be changed with options

  • --lanes: write lane geometries
  • --internal: write junction-internal edges or lanes