Site Tools


Sidebar

Work

Projects Travel Singapore Socials (External)

projects:software:malaysia_gtfs_opentripplanner_onebusaway

This is an old revision of the document!


Connecting Malaysia's Transport Data APIs to OpenTripPlanner and OneBusAway

FIXME This page is a work in progress.

Instructions below are written with Docker and Docker Compose in mind; it is possible to run OpenTripPlanner standalone but that is left as an exercise to the reader.

Malaysia's Transport Data APIs

OpenTripPlanner

Preparation - Files

  1. Create a working directory for OpenTripPlanner, for this example, we will use ./opentripplanner, you may wish to use different persistent storage e.g. for a Docker volume
    • mkdir opentripplanner && cd ./opentripplanner
  2. Create configuration files
    1. Build Configuration to download regional OpenStreepMap data and GTFS data (GTFS are not the documented API links due to URI extension validation in OpenTripPlanner)
      build-config.json
      {
        "osm": [
          {
            "source": "https://download.geofabrik.de/asia/malaysia-singapore-brunei-latest.osm.pbf"
          }
        ],
        "transitFeeds": [
          {
            "feedId": "ktmb",
            "source": "https://openapi-malaysia-transport.s3.ap-southeast-1.amazonaws.com/ktmb/gtfs_ktmb.zip",
            "type": "gtfs"
          },
          {
            "feedId": "mybas-johor",
            "source": "https://openapi-malaysia-transport.s3.ap-southeast-1.amazonaws.com/mybas-johor/gtfs_mybas.zip",
            "type": "gtfs"
          },
          {
            "feedId": "rapid-bus-kl",
            "source": "https://openapi-malaysia-transport.s3.ap-southeast-1.amazonaws.com/prasarana/gtfs_rapid_bus_kl.zip",
            "type": "gtfs"
          },
          {
            "feedId": "rapid-bus-kuantan",
            "source": "https://openapi-malaysia-transport.s3.ap-southeast-1.amazonaws.com/prasarana/gtfs_rapid_bus_kuantan.zip",
            "type": "gtfs"
          },
          {
            "feedId": "rapid-bus-mrtfeeder",
            "source": "https://openapi-malaysia-transport.s3.ap-southeast-1.amazonaws.com/prasarana/gtfs_rapid_bus_mrtfeeder.zip",
            "type": "gtfs"
          },
          {
            "feedId": "rapid-bus-penang",
            "source": "https://openapi-malaysia-transport.s3.ap-southeast-1.amazonaws.com/prasarana/gtfs_rapid_bus_penang.zip",
            "type": "gtfs"
          }
        ],
        "transitModelTimeZone": "Asia/Kuala_Lumpur"
      }
    2. Router Configuration for Malaysia GTFS Realtime vehicle position feeds
      router-config.json
      {
        "updaters": [
          {
            "feedId": "ktmb",
            "frequencySec": 30,
            "type": "vehicle-positions",
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/ktmb"
          },
          {
            "feedId": "mybas-johor",
            "frequencySec": 30,
            "type": "vehicle-positions",
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/mybas-johor"
          },
          {
            "feedId": "rapid-bus-kl",
            "frequencySec": 30,
            "type": "vehicle-positions",
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/prasarana?category=rapid-bus-kl"
          },
          {
            "feedId": "rapid-bus-kuantan",
            "frequencySec": 30,
            "type": "vehicle-positions",
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/prasarana?category=rapid-bus-kuantan"
          },
          {
            "feedId": "rapid-bus-mrtfeeder",
            "frequencySec": 30,
            "type": "vehicle-positions",
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/prasarana?category=rapid-bus-mrtfeeder"
          },
          {
            "feedId": "rapid-bus-penang",
            "frequencySec": 30,
            "type": "vehicle-positions",
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/prasarana?category=rapid-bus-penang"
          }
        ]
      }

Preparation - Docker Compose

compose.yaml
services:
  opentripplanner:
    command: --load --serve
    environment:
      - JAVA_TOOL_OPTIONS=-Xmx8g
    expose:
      - 8080
    image: opentripplanner/opentripplanner:latest
    restart: unless-stopped
    volumes:
      - /path/to/opentripplanner:/var/opentripplanner

Build Graph

  • Docker Compose:
    docker compose run opentripplanner --build --save
  • Docker:
    docker run --rm -v ./opentripplanner:/var/opentripplanner docker.io/opentripplanner/opentripplanner:latest --build --save

Start OpenTripPlanner Server

  • Docker Compose
    • docker compose up -d opentripplanner
    • docker compose logs -f opentripplanner to view logs
  • Docker (foreground): docker run -it --rm -p 8080:8080 -v ./opentripplanner:/var/opentripplanner docker.io/opentripplanner/opentripplanner:latest --load --serve

FIXME FIXME FIXME FIXME FIXME INCOMPLETE

projects/software/malaysia_gtfs_opentripplanner_onebusaway.1735675537.txt.gz · Last modified: 2024/12/31 20:05 by Andrew Yong