Isidro Razo, 49, was the latest bike rider to die on his way to work in Durham on May 25th on Angier Avenue. That makes four bike-related victims in the past 6 months in Durham. Despite deadly and risky biking conditions in Durham, the transition to a more bike-friendly community is slow and infrastructure budgets are not being accelerated. Policy makers need good data to know where to prioritize new bike plan infrastructure to make roadways safer. Bikers and would-be bikers need to know the safest routes and danger zones as they begin to bike more often to more places.
The goal of the application is to create color-coded bike routes based on relative risk of accidents, number of crashes, time of day, etc. using the NC bike crash database and bike reported incidents. The application will also highlight troublesome intersections.
A snapshot of the master branch is on heroku. This has been continuous integration server setup with Heroku - ping @dsummersl if its not working for you!
The project uses NPM to manage server side dependences and bower for angular dependencies. The
npm install will install both of these dependencies for you.
- app.js loads the data and starts the leaflet map
- MainMap.js is the angular controller that controls the map, makes its full-screen map and configures map legend
- Crashes.js is responsible for drawing the dot in reference to crashes on the map
- Paths.js is responsible for drawing the bicycle paths on the map
- UserSubmittedCrashes.js draws the user submitted square dots on the map
- AddAccident.js is the control form for user’s self-reporting accidents
The server is an [express server] (expressjs.com). It serves static content (i.e. the static angular files) and (converts the Jade templates into HTML??).
You only need Node.js to develop this platform. Install that:
npm install npm start
npm start will open a server on port 3000 of your computer. Go there to view the app.
Under development you might want to rerun tests when files change:
npm run-script start-test
The frontend application uses TopoJSON to render paths. If the source geojson is updated then the topojson needs to be updated too.
To convert the geojson file to topojson:
./node_modules/.bin/topojson -p BIKE_FACIL --id-property OBJECTID_12 html/src/data/durham-bike-lanes.geojson > html/src/data/durham-bike-lanes.topojson
Data is read from Code for America Socrata, supplied by the NCDOT bi-annually. We migrate and clean the data. If the data changes or the cleanup process changes, one should download the new CSV data and import it:
- Data is stored in the data/ directory.
- Start the server with Firebase credentials:
# export both NCDOT and user-submitted bicyclist crashes to local JSON files npm run export-bicyclist-crashes # export both NCDOT and user-submitted pedestrian crashes to local JSON files npm run export-pedestrian-crashes # export NCDOT and user-submitted bicyclist and pedestrian crashes to local JSON files npm run export-all-crashes # recreate crashes database from NCDOT data. npm run create-firebase # replace Firebase table with contents of local JSON file: npm run import-firebase -- <table name> <local file> # delete a table from Firebase npm run delete-firebase -- <table name>