Wednesday, March 10, 2010
Over on the Official Google Blog, you can read a very, very exciting announcement: Google Maps now offers biking directions! As my teammate Shannon mentions in that post, we've been constantly asked when this feature will be made available. But as an engineer working on the directions team, I'd often get questions about why Google Maps didn't already have biking directions. After all, we've had driving, walking, and public transit directions for some time, so what is it about biking directions in particular that presents an engineering challenge?
Well now that the good news is out, I can lift the curtain and explain the many factors and variables that we've had to take into account to put this whole feature together:
- Bike trails: Our maps contain over twelve thousand of miles of biking trails. First, we had to figure out where trails are, so we worked with the Rails-to-Trails Conservancy to get much of our trail data. Once we had trails mapped out, the next task was to incorporate them into our routing algorithm. The algorithm is weighted to strongly prefer routing on these trails rather than roads open to automobile traffic, so your directions will try to put you onto a trail as long as it won't take you totally out of your way. On our bicycling layer (found under the 'More' button), these trails show up in dark green.
- Bike lanes: For more than 150 cities in the US, we know which streets have dedicated bicycle lanes. These are also prioritized when coming up with a routing suggestion. On the bicycling layer, you’ll see these roads indicated in bright green.
- Recommended routes: For many cities we also provide information on streets that have been designated as good for cyclists, so we them into account in our algorithm. These roads are indicated with dashed green lines on our bicycling layer.
- Uphill slopes: l don't know anyone who enjoys biking up a hill, especially when you're trying to get somewhere you need to be. Going uphill is worse than simply being much slower; it's also exhausting and can take a toll on the rest of your ride. Our biking directions are based on a physical model of the amount of power your body has to exert given the slope of the road you’re biking on. Assuming typical values for mass and for wind resistance, we compute the effort you’ll require and the speed you’ll achieve while going uphill. We take this speed into account when determining the time estimate for your journey, and we also try hard to avoid routes that will require an unreasonable degree of exertion. Sometimes the model will determine that it's far more efficient to make you ride several extra blocks than to have to deal with a massive hill. My teammates in San Francisco were relieved to see that this does indeed work!
- Downhill slopes: Many cyclists will tell you that going downhill is annoying for a different reason: you may have to ride your brakes all the way down. All else equal, we try to avoid routes that require a lot of braking. Of course, in some cities, including my hometown of Seattle, this isn’t always possible! And if you feel like you need a big workout and want to climb some hills, or if you just love that wind-in-your-hair feeling of a long downhill (you better be wearing a helmet and staying safe!), you can always turn on the terrain layer to check out the hilliness of an area for yourself.
- Busy roads: Cyclists often tend to prefer to stay off of fast roads, and not even cross them unless it's necessary. This is roughly the inverse of driving directions, where you want to stay on arterials and freeways, so we had to rework a lot of those fundamental calculations when coming up with our biking directions algorithm.
- Busy intersections: We try to avoid making you cross busy streets with a lot of car traffic and long wait times.