TraceExporter

# From 30.000 feet

traceExporter.py 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

# Introduction

Different applications read "vehicular traces", files containing mainly positions of vehicles over time. traceExporter.py 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

traceExporter.py 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:

    traceExporter.py --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

traceExporter.py often needs only the fcd output as input. In some cases, the network used while obtaining the fcd output must be given. traceExporter.py 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. traceExporter.py --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 traceExporter.py are given, divided by the application,

### PHEM

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>

### OMNET

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

### Shawn

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

### ns2/ns3

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>

### GPSDAT

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

### GPX

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

### PoI

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

### KML

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

### IPG

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

### SSAM

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

### fcd

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:

    0;50;500,400,600,500;out.xml
    50;100;550,450,600,500;out2.xml

## 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
--- | ---
--help -h | Shows a help screen.

# See Also

- This tutorial on using TraceExporter
- working around bugs in version 0.19.0

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

#### Search

Enter your search terms:

#### Keyboard Shortcuts

Key | Action
--- | ---
`?` | Open this help dialog
`s` | Search the Documentation
`e` | Edit current page on GitHub