Skip to content

cheeaun/busrouter-sg

Repository files navigation

BusRouter SG

Singapore Bus Routes Explorer 🚌 🗺 🇸🇬

Explore bus stops and routes on the map for all bus services in Singapore, with realtime bus arrival times and per-bus-stop passing routes overview.

Website     Blog Post

Screenshot of BusRouter SG

Screenshot of BusRouter SG

✨ Features

  • All bus stops shown even in low zoom levels.
  • Full routes display with all stops for every service.
  • View all routes passing through a stop.
  • Bus arrival times for every stop.
  • First/last timings for all services.

🕰 Previously

Previously known as Singapore Bus Routes Explorer, abbreviated as 'SBRE' and previously looks like this:

Screenshot of Singapore Bus Routes Explorer

Visualization mini-site

A separate mini-site showing ALL stops and routes on a map. All of them.

Check it out: Visualization mini-site (⚠️ Uses a lot of bandwidth).

Technicalities

Data

All data such as bus stops, services and routes are mostly scraped from https://www.lta.gov.sg/, which means they are copyrighted by the Land Transport Authority.

They are available here: cheeaun/sgbusdata.

Web App

The scripts for the web app:

  • npm start - start server for development
  • npm run build - build for production and deployment, in ./dist folder.

Localization

Crowdin

➡️ Start translating ⬅️

Visualization

At least Node.js 14 is required.

The scripts to generate the data, in order:

  1. node visualization/build-routes.mjs
    • Reads data.busrouter.sg/v1/data/stops.min.json and transform routes data with "levels" for 3D extrusion.
    • Generates visualization/data/routes.json and visualization/data/levels.json to be read by the build-stops script.
  2. node visualization/build-stops.mjs
    • Reads data.busrouter.sg/v1/data/stops.min.geojson and buffered into triangle polygons which will be 3D-extruded.
    • Generates visualization/data/stops.3d.json.

📜 License

Data © LTA © OneMap © OSM contributors. Everything else: MIT

🎤 Feedback

If you have any feedback, leave them on Discussions or tweet me @cheeaun on Twitter.

🙇‍ Credits