Tuesday, August 23, 2011

Strava segment creation tips

By now, I think most cyclists reading this would be aware of what Strava is. Strava's exponential growth model is dependent on users defining segments. Segments are what provide the arenas for competition which provides the incentive for new users to join, then those users define segments, etc. There can be only one king of a hill, but if you have an unlimited supply of hills, then everyone can be a king (or queen).

But the weakness of allowing anyone to define a segment is there's limited quality control over the segments. Here Strava has a check: a "flag" option whereby users can tag a segment as flawed in various ways. But responding to tags requires human intervention, and human bandwidth is unlikely to keep up with the exponentially user growth model. So at least until they develop a way for automated tag resolution (for example implementing some sort of "thumbs up" versus "thumbs down" voting scheme where segments can be voted off the public database), users rely on segment definers to do a good job in their definition.

Here's some of my ideas in how to define a good segment:
  1. Start with good data. This is by far the most important suggestion. If data are of poor quality, for example shifted versus the actual roadway ridden, then don't use it. Try again another day to collect segment-worthy data, or use another user's ride data (you can define segments from any ride, not just your own) to define the segment. It's likely your ride data will still match the segment if both you and this "reference" ride rode the same path, as Strava's segment matching algorithm is loose enough to allow for typical GPS errors. But it's important the original data be of the best available quality. I've noticed iPhone data tends to be particularly problematic. With me, the Garmin 500 is decent, but my HTC Incredible phone is regularly in better agreement with the Google map than my Garmin.
  2. Avoid starting or finishing the segment too close to a congregation point. The starting point and finishing points should be far enough (at least 10 meters, preferably 20 meters or more) where riders would typically pause before starting a climb, or grouping after the climb. It's very frustrating to do a hard effort on a climb only to discover later that your time was padded by time spent at the bottom of the climb preparing to start. It's okay to click the start point a few sample points into the climb: that's unlikely to change the rankings much.
  3. Avoid starting or finishing a segment on a steep section. Position errors translate into timing errors: GPS is remarkably good, but not good enough for second-resolution timing. The slower riders are going when they start or finish a segment, the greater the timing error resulting from an error in position. So if there's a nasty short climb you want to include, it's actually better to start a segment slightly before, and end it slightly after, the short steep bit. Unfortunately this often conflicts with the "congregation point" suggestion. So sometimes you can't avoid this one.
  4. Try to clearly differentiate segments from other segments. A classic problem is if a dirt path runs next to a paved road, for example, a segment defined for the dirt path will be dominated by riders who used the road instead. The segment matching isn't picky enough, nor GPS accurate enough, to always determine which a rider was one. So the best segments are cleanly separated from faster nearby routes.
  5. Avoid tight switchbacks at the start or finish of a segment. If the route passes close to the finish point, Strava may tag a rider as done (or just starting) at the wrong point on the course. It would be better to terminate the segment either well after or before the switchback.
  6. Avoid segments with obvious short-cuts. Strava has to allow some variation in course along the way, and may well match data for a rider who "shortcutted" a segment. Preferably a segment would be over the shortest distance connecting a few well-differentiated points. For example, for a major climb, the road is likely the fastest way from the bottom point to the top.
  7. Be more inclusive where it won't compromise the segment. For example, I recently did a good effort up Polhemus Road, a local climb. At the top it's common to cut through a short parking lot to a bike path. The official segment continued on the road to the end of the parking lot. As a result my timing included time spent waiting in the parking lot. Had the segment been terminated at the leading edge of the lot rather than the trailing edge, it would have been more likely to have given good timings to riders turning through the lot rather than just those continuing along the road.
Okay, so that's a lot of suggestions. Strava promised to improve segment matching, but there's no substitute for robust, accurate reference data. And since Strava doesn't use map data for segments, instead relying on user-recorded coordinates, it's especially important that users at least try to make that data as good as possible.


JimmyDee said...


Another issue I have locally here, is someone keeps defining climbs with a "lead in". That means, if you approach the road from a different direction, Strava doesn't pick it up.

That said, Strava still has serious issues with GPS resolution from smartphones on climbs (not sure if the same issue is on Garmins, I don't have one to test with). When data points are too close together, it creates zigzags, which more than doubles the length of the climb (~123% more in my case). Measured on Google Maps, it's 1.3 miles. On Strava, it said it was 2.9 miles. It also said I averaged 19.0 mph, which is impossible since I climbed most of it in my 34x28 gear (which would equal averaging 198 rpm).

If they had a "snap to road" option, it would eliminate a lot of error, but I guess then mountain bikers would have a fit.

Anonymous said...

All good tips.

Another one I'll add - when defining loop segments, don't put the start and end points right on top of one another. Small errors in the GPS data can lead to the end point being picked up before the start point, resulting in a missed segment. It's better to put the start point a few meters into the loop, and the end point a few meters before the end.

On JimmyDee's point, "snap to road" would be a great option. Yes, it wouldn't work for MTB, but if it were really an option (so you could use it on roads and not use it off-road), that wouldn't matter.

Brian Peterson said...

As I've started using Strava more and more, the issue of segments definition is coming up for me more, and it's very frustrating. It's one thing to have chosen poor starting and ending locations, and it's another to completely spell the name of a trail incorrectly (i.e. Corral vs. Coral).

I don't want to add more segments that are duplicates, but to keep my own sanity, I may have to start defining my own segments. That or just stop paying attention to the segments and use my lap timer. But that takes away the *easy* (if imperfect) fun of comparing with your friends.