The 2016
var mapper = function () {
var key = {bikeid:this.bikeid}
emit(key,1)
} //mapper
var reducer = function(key,values){return Array.sum(values);} //reducer
Armed with the bikeid values of the least-used bikes, NodeJS reached back into Mongo for those bikes' rides:
var DE =db.collection('rides').find(
{ $or: [
{bikeid: 1301}
,{bikeid: 1583}
,{bikeid: 1716}
,{bikeid: 1741}
,{bikeid: 1582}
,{bikeid: 1737}
,{bikeid: 1891}
,{bikeid: 1895}
] }
);
These data, so small (and manually-annoted), were saved with the rest of the web app code (see the raw here).
The web app itself is a congenial pairing of Leaflet, Backbone.js, and TimelineJS draped over a Bootstrap bed.
For map enthusiasts, an undocumented feature is the basemap array. Hidden from the GUI in order to reduce clutter, technically you can swap the basemap by pasting one of the following in the url in place of the default "pencil" basemap:
A couple of the lowest-performing bikes were associated with stations (“8D OPS 01” and “8D OPS 03”) that had clearly-incorrect lat/lng pairs. There were no metadata explaining these stations, nor does it appear there are any corresponding stations in the Hubway GBFS feed. Likely they are not public rental stations and the data are perhaps inventory movements or other non-“use” events (even though https://www.thehubway.com/system-data ). At any rate, they have been manually removed from this application.
Strictly-speaking, issues can be submitted to this app's dist git repo.