From 30.000 feet# converts and filters SUMO fcd output to different "trace file" formats: OMNET, Shawn, ns2/ns3, PHEM.

  • Purpose: trace file conversion/generation
  • System: portable (Linux/Windows is tested); runs on command line
  • Input (mandatory): SUMO fcd-output
  • Output: One or more "trace file(s)" and other complementary files
  • Programming Language: Python


Different applications read "vehicular traces", files containing mainly positions of vehicles over time. generates such files by converting SUMO's fcd output into several supported formats. Following files can be generated, sorted by application:

  • OMNET: mobility-traces (.xml)
  • Shawn: snapshot-files (.xml)
  • ns2/ns3: trace-files, activity-files, and mobility-files (all *.tcl)
  • PHEM: .dri-files, .str-files, .fzp-files, .flt-files
  • GPSDAT csv traces (id,date,x,y,status,speedKMH)
  • GPX
  • KML
  • Kepler-JSON
  • IPG Traces (experimental)
  • SSAM trajectories
  • POIs (can visualize GPS distortions and sampling in sumo-gui)
  • fcd output to restrict the file to certain regions or time intervals

Installation# comes with SUMO and is located in <SUMO_HOME>/tools/. Python must be installed.

Usage Description#

You convert a given fcd output into a format using a command like this: --fcd-input myFCDoutput.xml --omnet-output myOMNETfile.xml

In the case given above, a file for OMNET will be built.

In the following, the command line options are described.

Input Options# often needs only the fcd output as input. In some cases, the network used while obtaining the fcd output must be given. gives an error message if the wanted output needs additional files, such as the network, but no such file is specified. The options for defining the input files are:

Option Description
--fcd-input <FILE>
-i <FILE>
The fcd-output - file to convert (numeric value is interpreted as port to listen on)
--net-input <FILE>
-n <FILE>
The network file used; Mainly used for exporting the network

All outputs which need to read the input only once support reading from a socket. To do so just give a number as file name and the script will open a port to listen on. Afterwards you can start sumo with the corresponding port as output, e.g. --fcd-input 43214 ... needs to be followed by sumo --fcd-output localhost:43214. This should work at least with OMNET, Shawn, GPSDAT, GPX, POIs and fcd filtering.

Output Options#

In the following, the output options of are given, divided by the application,


Option Description
--dri-output <FILE> Generates a PHEM .dri-file named <FILE>
--str-output <FILE> Generates a PHEM .str-file named <FILE>; note that the SUMO network used during the simulation must be given using the --net-input option
--fzp-output <FILE> Generates a PHEM .fzp-file named <FILE>
--flt-output <FILE> Generates a PHEM .flt-file named <FILE>


Option Description
--omnet-output <FILE> Generates a OMNET mobility trace named <FILE>


Option Description
--shawn-output <FILE> Generates a Shawn snaphot file named <FILE>


Option Description
--ns2config-output <FILE> Generates a ns2 configuration file named <FILE>
--ns2activity-output <FILE> Generates a ns2 activity file named <FILE>
--ns2mobility-output <FILE> Generates a ns2 mobility file named <FILE>


Option Description
--gpsdat-output <FILE> Generates a GPSDAT file named <FILE>


Option Description
--gpx-output <FILE> Generates a GPX file named <FILE>


Option Description
--poi-output <FILE> Generates a SUMO PoI file named <FILE>


Option Description
--kml-output <FILE> Generates a KML file named <FILE>


Option Description
--ipg-output <FILE> Generates a IPG file named <FILE>


Option Description
--trj-output <FILE> Generates the SSAM trajectory file named <FILE>
--trj-veh-width <FILE> vehicle width for trajectory generation
--trj-veh-length <FILE> vehicle length for trajectory generation


Option Description
--fcd-filter <FILE> Reads filter settings from <FILE>
--fcd-filter-comment <STRING> Extra comments to include in fcd file
--fcd-filter-type <STRING> Modify the vehicle type of all written vehicles to <STRING>

The filter file is a simple csv format giving begin;end;bounding_box;outfile where the bounding box is x1,y1,x2,y2 defining the lower left and the upper right corner of the area to extract. The coordinate format needs to fit the input format (so if the input has geo coordinates the bounding box needs to have geo coordinates as well). It is currently not possible to give the same output file for different filter lines.

Example filter file:


Processing Options#

Several options allow to fine-tune the processing.

Option Description
--persons <BOOL> Whether persons should be included in the trace; default: False
--penetration <FLOAT> A float between 0 and 1, defining the probability of a vehicle to be included in the output; default: 1
--gps-blur <FLOAT> A float defining a random offset applied on the vehicle positions before exporting them; default: 0
--boundary <FLOAT>,<FLOAT>,<FLOAT>,<FLOAT> Defines the bounding box as 'xmin,ymin,xmax,ymax'
--delta-t <TIME>
-d <TIME>
Defines the time sampling, if given; only every <TIME> time step will be exported.
--begin <TIME>
-b <TIME>
Time steps before <TIME> are not exported.
--end <TIME>
-e <TIME>
Time steps after <TIME> are not exported. Please note that some issues are known, here.
--seed <INT>
-s <INT>
The randomizer seed to use.
--base-date <INT>
-s <INT>
The base date in seconds since the epoch (1970-01-01 00:00:00), the default is the current local time.

Additional Options#

Option Description
Shows a help screen.

See Also#

Seventh Framework Programme COLOMBO project This part of SUMO was developed, reworked, or extended within the project "COLOMBO", co-funded by the European Commission within the Seventh Framework Programme.