OpenTripPlanner (OTP) ist eine quelloffene Plattform in Java zur multimodalen Reiseplanung. Sie berechnet Routen über mehrere Verkehrsmittel hinweg, etwa ÖPNV, Fußwege, Fahrrad und Auto, und kombiniert dafür vor allem GTFS-Fahrplandaten mit OpenStreetMap-Kartendaten. OTP wird als Server-Komponente betrieben und stellt Schnittstellen für Web- und Mobile-Anwendungen bereit.

OTP erzeugt aus den Eingabedaten einen Graphen des Verkehrsnetzes. Dieser Graph basiert auf Straßen- und Wegenetzen aus OpenStreetMap sowie Fahrplandaten im GTFS-Format. Auf dieser Grundlage sucht die Software nach sinnvollen Reiseketten, zum Beispiel „zu Fuß zur Haltestelle, mit der Bahn weiter, dann per Fahrrad zum Ziel“.

Mit OTP 2 wurde der Bereich des ÖPNV-Routings grundlegend überarbeitet. Die offizielle Versionsdokumentation beschreibt, dass die Routing-Komponente für den öffentlichen Verkehr in OTP2 neu geschrieben wurde und gegenüber OTP1 bessere Leistung in großen Verkehrsnetzen sowie mehr alternative Reisevorschläge bietet.

Konfiguration

Siehe auch GraphQL

build-config

Die Datei build-config.json teilt OTP mit, welche Optionen beim Erstellen des zugrunde liegenden Graphen festgelegt werden sollen.

{
  "configVersion": "wien-v1",
  "dataImportReport": true,
  "osmDefaults": {
    "timeZone": "Europe/Vienna"
  }
}

router-config

Die Datei router-config.json enthält Standardkonfigurationen für Routing-Anfragen (z. B. Gehgeschwindigkeit). Befindet sie sich im Router-Verzeichnis, wird sie beim Erstellen des Routing-Graphen verwendet.

{
  "configVersion": "wien-v1",
  "routingDefaults": {
    "walk": {
      "boardCost": 900
    },
    "accessEgress": {
      "maxDurationForMode": {
        "WALK": "PT10M"
      }
    }
  }
}

Test

sudo apt update
sudo apt install -y openjdk-25-jre-headless wget unzip
java -version
 
sudo mkdir -p /opt/otp
sudo chown -R $USER:$USER /opt/otp
cd /opt/otp
 
wget https://github.com/opentripplanner/OpenTripPlanner/releases/download/v2.9.0/otp-shaded-2.9.0.jar -O otp.jar
 
# Download PBF
# Download gtfs.zip
 
cat > /opt/otp/build-config.json <<'EOF'
{
  "configVersion": "wien-v1",
  "dataImportReport": true,
  "osmDefaults": {
    "timeZone": "Europe/Vienna"
  }
}
EOF
 
cat > /opt/otp/router-config.json <<'EOF'
{
  "configVersion": "wien-v1",
  "routingDefaults": {
    "walkSpeed": 1.3
  }
}
EOF
 
java -Xmx6G -jar otp.jar --build --save .
 
# Falsche Java Version...
# sudo apt install -y openjdk-25-jre-headless
# sudo update-alternatives --config java
 
java -Xmx6G -jar otp.jar --build --save .
 
# Dauert etwas
 
java -Xmx6G -jar otp.jar --load .