Inspiration

Most HDB blocks sit near an MRT station or bus stop, so Singapore looks well connected on a map. But nearby isn't the same as usable. An elderly-dense estate 500m from an MRT station may in practice rely on one crowded bus route to reach its polyclinic. Standard accessibility measures use distance or shortest travel time and assume everyone travels the same way. We wanted a measure that reflects how each neighbourhood actually moves.

What it does

AccessLens estimates how easily residents of each HDB area can reach supermarkets, hawker centres, polyclinics, parks, gyms and MRT stations by public transport. It combines physical access (travel time, walking distance, transfers) with observed behaviour: passenger flows by time of day, connectivity and demographics. Unsupervised learning groups neighbourhoods into mobility profiles (bus-reliant, MRT-reliant, multimodal, low-access), and these feed into a Behaviour-Aware Accessibility Score. An interactive heat map highlights areas, especially elderly-dense ones, that have mobility gaps despite transport being nearby.

How we're building it

  • Ingest: data.gov.sg, LTA DataMall passenger volumes and OneMap routing, stored in Delta tables using Lakeflow
  • Engineer: assign each bus stop and station to the HDB areas it serves, then build behaviour features and the block-to-amenity trip table
  • Model: k-means clustering into mobility profiles, tracked in MLflow; scores weighted by profile; tests showing rankings stay stable when the weights change
  • Serve: AI/BI heat map, a Genie space and a Databricks App for what-if scenarios
  • Govern: Unity Catalog for lineage and role-based access

Challenges we expect

  • Passenger data isn't per resident: DataMall reports volume at each bus stop and station, not by where people live, so we have to estimate how each stop's flows split across nearby HDB areas.
  • API limits: routing tens of thousands of block-to-amenity trips through OneMap means working within its rate limits, so we'll store results and scale one region at a time.
  • Clusters that make sense: profiles have to be understandable to a planner, not just statistically separate.
  • Defensible weights: we'll show how sensitive the score is to its weights instead of asking planners to trust one formula.

What we learned

Scoping this showed us that proximity-based measures miss how people actually behave. Two estates the same distance from an MRT station can have completely different travel patterns, and that difference is where the real accessibility gaps are.

Built With

  • auto-loader
  • databricks
  • databricks-apps
  • databricks-sql
  • delta-lake
  • genie
  • geojson
  • geopandas
  • h3
  • k-means
  • lakeflow
  • mlflow
  • onemap-api
  • pyspark
  • python
  • scikit-learn
  • sqlite
  • unity-catalog
Share this project:

Updates

Submission history