Dynamic Bus Routing – PROGRESS

Current progress on the Urban Data Model (UDM) Platform and the Dynamic Bus Routing prototype. See the roadmap for the ongoing development of the UDM. Here is a video showing the current state of the simulation running.

The Dynamic Bus Routing prototype has now implemented the following feature:

  • loading of street network from a postgis database
  • bus traversal on the street network
  • definition of catchment zones based on Voronoi analysis of bus current route nodes
  • assignment of riders for pickup which fall into those zones
  • rerouting based on new rider pickup locations, and drop of locations once rider is picked up

Next steps include:

  • Fix the voronoi polygon union issue – current approach (polygon -> multipolygon) is fast but creates a bunch of strange boundary lines that are very distracting. Need to find a better solution for joining all the polygons to draw clean boundary lines between bus catchment zones!!!
  • Work on display layer issues, possibly using PGraphics objects to create multiple display “layers” – i.e. a UI layer on top, followed by an annotation layer, a draw layer, and finally a background layer on bottom.
  • Providing a rider handling system so that certain bus catchments don’t become too large (solving the problem that as more riders are assigned, the catchment becomes larger, causing more riders to be assigned, and so forth)
  • Build animation output
  • Providing some toggles for display styles
  • Add a UI library

UDM Progress

Basic UDM functionality up and running:

  • import from PostGIS database
  • data conversion from WKT to Geotools Geometry
  • scene geometry envelope calculation
  • view scaling and translation to extents of envelope
  • interactive zoom/pan with keyboard
  • interactive zoom/pan with mouse (need to disentangle this functionality from the main p5 App class using native Java mouseListener class)

Next steps:

  • clean up architecture of UObject package:  How to handle geometry in UObjects? Should UObjects be able to contain multiple geometries? Should all geometry draw functions be handled through inheritance of standard Geotools geometry objects – i.e. outside of UObjects?
  • Set up graph network layer – to what extent can Geotools classes be used/extended from here?
  • How to handle object display scaling issues with zoom functions?
  • migrate code to github
  • set up online PostGIS database and start testing remote access