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. Manually download GTFS static data (this can be automated once api.data.gov.my serves GTFS with header Content-Type: application/zip)
    • wget --trust-server-names https://api.data.gov.my/gtfs-static/mybas-johor
    • wget --trust-server-names https://api.data.gov.my/gtfs-static/ktmb
    • wget --trust-server-names https://api.data.gov.my/gtfs-static/prasarana?category=rapid-bus-penang
    • wget --trust-server-names https://api.data.gov.my/gtfs-static/prasarana?category=rapid-bus-kuantan
    • wget --trust-server-names https://api.data.gov.my/gtfs-static/prasarana?category=rapid-bus-mrtfeeder
    • wget --trust-server-names https://api.data.gov.my/gtfs-static/prasarana?category=rapid-rail-kl
    • wget --trust-server-names https://api.data.gov.my/gtfs-static/prasarana?category=rapid-bus-kl
  3. Create additional configuration files
    1. Build Configuration to automatically download regional OpenStreepMap; timezone is required as Malaysia GTFS does not define timezone
      build-config.json
      {
        "transitModelTimeZone": "Asia/Kuala_Lumpur",
        "osm": [
          {
            "source": "https://download.geofabrik.de/asia/malaysia-singapore-brunei-latest.osm.pbf"
       
          }
        ]
      }
    2. Router Configuration for Malaysia GTFS Realtime vehicle position feeds
      router-config.json
      {
        "updaters": [
          {
            "type": "vehicle-positions",
            "frequencySec": 30,
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/mybas-johor",
            "feedId": "mybas-johor"
          },
          {
            "type": "vehicle-positions",
            "frequencySec": 30,
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/ktmb",
            "feedId": "ktmb"
          },
          {
            "type": "vehicle-positions",
            "frequencySec": 30,
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/prasarana?category=rapid-bus-kl",
            "feedId": "rapid-bus-kl"
          },
          {
            "type": "vehicle-positions",
            "frequencySec": 30,
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/prasarana?category=rapid-bus-mrtfeeder",
            "feedId": "rapid-bus-mrtfeeder"
          },
          {
            "type": "vehicle-positions",
            "frequencySec": 30,
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/prasarana?category=rapid-bus-kuantan",
            "feedId": "rapid-bus-kuantan"
          },
          {
            "type": "vehicle-positions",
            "frequencySec": 30,
            "url": "https://api.data.gov.my/gtfs-realtime/vehicle-position/prasarana?category=rapid-bus-penang",
            "feedId": "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.1735670570.txt.gz · Last modified: 2024/12/31 18:42 by Andrew Yong