Getting Started


r:trån requires JDK 11 or later versions.

If you are on Windows, install it with choco by running:

choco install openjdk11

If you are on a Debian-based Linux, install the JDK by running:

sudo apt install openjdk-11-jre

If you are on macOS, install it with homebrew by running:

brew tap AdoptOpenJDK/openjdk
brew cask install adoptopenjdk11


Download the executable jar at the releases section or build it yourself:

git clone
cd rtron

./gradlew shadowJar # build the uber-jar
cd rtron-cli/build/libs

Let it run:

java -jar rtron-*.jar
      r:trån transforms road networks described in OpenDRIVE into the virtual 3D
      city model standard CityGML.
      --version       Show the version and exit
      --no-recursive  Do not search recursively for input files in given
                      input directory
      --concurrent    Enable concurrent processing during the
                      transformation of a model (experimental)
      -c, --clean     Clean output directory by deleting its
                      current content before starting
      -h, --help      Show this message and exit
      INPUTPATH   Path to the directory containing OpenDRIVE datasets
      OUTPUTPATH  Path to the output directory into which the
                  transformed CityGML models are written

Batch Processing

Assuming there are multiple OpenDRIVE datasets contained in the input path, for example like this:

tree ./opendrive-datasets
  │   ├── Ex_Line-Spiral-Arc.xodr
  │   └── UC_ParamPoly3.xodr
      └── CrossingComplex8Course.xodr

r:trån then recursively iterates over all models and generates the respective CityGML datasets. The directory structure is preserved and report logs are added:

java -jar rtron-*.jar ./opendrive-datasets ./citygml-datasets

tree ./citygml-datasets
  │   ├── Ex_Line-Spiral-Arc
  │   │   ├── Ex_Line-Spiral-Arc.gml
  │   │   └── report.log
  │   └── UC_ParamPoly3
  │       ├── report.log
  │       └── UC_ParamPoly3.gml
  ├── general.log
      └── CrossingComplex8Course
          ├── CrossingComplex8Course.gml
          └── report.log