OpenStreetMap logo OpenStreetMap

Workflow for adding surface information collected during bike rides

Posted by hobbesvsboyle on 8 June 2024 in English. Last updated on 17 June 2024.

I love to ride my bike. Long distances. New roads. Usually starting from my home in Madison, WI. I also love mapping. And so whenever I’m out riding I try to do at least a bit of OpenStreetMap data collection. When I see interesting features, like a bike repair stand, or stop at a potential point-of-interest, like a café or gas station, I take a picture on my phone and add the data to OSM once I’m home.

Wandrer.earth map of roads I have bike in around Madison, Wisconsin. I have ridden a lot of them.

Recently I became interested in improving the quality of surface tags for highways. Dane County is known to have a very high proportion of paved roads. Even small rural farm roads are almost always paved. But pavement data in OpenStreetMap is spotty. Therefore I was interested in developing a workflow that allows me to add/update surface=* tags through my bike rides.

I asked for advice on this on the OSMUS Slack channel and got some good suggestions. Based on these suggestions, I developed the following workflow.

During the ride

My default assumption is that a road is paved. Thus, I don’t need to do anything whenever I’m on a paved road. Most paved roads are asphalt (I’m not going to get into the question whether asphalt and chip sealed roads should be tagged differently), and so again, on an asphalt-paved roads I’m not doing anything. Some state and US highways and some rare local roads have different paving, usually concrete. When I encounter one of those (and am in the mood for it), I’ll take a geotagged photo or take a mental note.

Highway bridges almost always have a concrete deck, and so I only note deviations from this. When I encounter an unpaved road, I’ll take a geotagged photo at the beginning and end of the unpaved section, or sometimes record a voice memo to capture more complex information. (Okay, I don’t really do the voice memo in practice – photos are usually much better to capture the information.)

The geotagging on my phone can be less-than-accurate, especially when using battery saver mode. I record a GPS track of my rides with my phone or, preferably, a Wahoo Element bike computer.

Editing at home

  1. Download the GPX file from Strava and the geotagged photos from Google Photos.
  2. Open photos and GPX file in JOSM.
    • If the location of the geotagged photos looks off, I correlate the location of the photos with the GPX track, using the Photo Geotagging plugin.
  3. Right-click on the GPX track layer and select “Download from OSM along this track” JOSM dialog box
  4. The default settings have too wide a buffer around the track. I find that 10 meters gets you everything you need and keeps the downloaded data manageable. In densely mapped areas, you may have to reduce the “Maximum area per request” setting to something lower to avoid errorsJOSM dialog box
  5. The downloaded data includes buildings, waterways, and all kinds of other stuff that is not useful. It also includes highways that already have a surface tag. Therefore, you set up a filter in JOSM. If the filter pane isn’t already active, activate it in the “Windows” menu: Screenshot of the JOSM Windows menu.
  6. Add a filter by clicking on the + symbol in the filter pane: JOSM filter pane
  7. The filter term is surface=* | -highway=* JOSM filter dialog This filters out any object that already has a surface tag and any object that is not a highway.
  8. I found it helpful to make the GPX track drawing a little wider. Right-click on the track’s layer, select “Customize track drawing,” and set “Drawing width of GPX lines” to 8. Main window of JOSM, of an intersection and aerial imagery. A 8-px wide magenta line marks the GPS track
  9. Now we have everything set up to add tags. I follow the GPX track and add surface=* tags to any highway I biked on. Often this is also an opportunity to make other improvements, such as removing old TIGER tags.
    • If I’m unsure about the specific surface type (e.g. concrete vs asphalt), I default to the more generic tag (surface=paved), skip tagging the way, or add an OSM Note.
    • If I only crossed rather than traveled along a highway segment, I may add surface tags to it if I’m really confident and the segment is not very long.

Tips and tricks and quirks

  • When you work with the filtered view, make sure to make any edits to a way before you add the surface tag. Once you have added the surface tag and closed the “Add tag” dialogue, the way will disappear – as the filter you set up now applies to this way.
  • The filter also removes all points along the ways. Thus, if you want to adjust the geometry of a way, you have to temporarily disable the filter by checking the “E”(nabled) checkbox in the filter pane. JOSM filter pane, with one filter having the E checkbox enabled
  • Turning on aerial imagery can sometimes be helpful; sometimes it’s distracting. I don’t recommend relying too much on aerial imagery for surface information. One possible exception: Concrete vs other types of bridge decks are usually easily to distinguish based on imagery.
  • Keyboard shortcuts speed everything up. The most important default shortcuts are:
    • Option-A: Add tag
    • CMD-1, 2, 3, … within the “Add tag” dialog to quickly access previously added tag/value combinations
    • CMD-Option-E: Enable/disable filter (this one doesn’t actually work for me on my Macbook)

Like almost anything within JOSM, you can modify shortcuts too or create custom shortcuts. The defaults seem to be working well enough for me and I haven’t messed around with customization.

I make no claims that this is the best workflow for what I’m trying to do—please let me know if you can think of improvements or have your own alternative workflows!

Location: Mifflin West, Madison, Dane County, Wisconsin, United States

Discussion

Comment from b-jazz on 11 June 2024 at 01:57

I went on a road trip recently and had this exact same problem/project come to mind. Thanks for the excellent write-up. I have a few comments:

  • After loading from OSM around the GPX track, nothing is selected for me. So I’m a little confused on what is going on in Step 5. Best I can tell, I’m supposed to select everything (I just drew a big selection rectangle over everything) and then select “remove from selection” instead of “add to selection” as the screenshot shows, right?
  • You might want to mention that the filtering is configured by going to “Edit -> Search”. I wasn’t exactly sure where to find filtering, but the image reminded of the Find panel.
  • I wonder if there is a way to filter out all of the side streets that get brought along in the download. I have no idea what the road is for those as I didn’t travel down there. It would be great to eliminate them from the list somehow.
  • I use the ToDo plug-in a lot. If I can get the side-street issues solved, I imagine it will be helpful for working through the untagged segments.

Comment from hobbesvsboyle on 11 June 2024 at 19:58

@b-jazz Thanks for the feedback. I edited the post to add some intermediate steps that make it more obvious what’s going on. You don’t use the “search” function, but add the filter in the filter pane (which may or may not be activated for you). Please let me know if the new version of the description makes more sense.

I don’t have an answer for your side streets or ToDo plugin questions unfortunately, but maybe this is less of an issue when you have the filtering set up properly.

Comment from stevea on 16 June 2024 at 18:50

I love seeing how-to tutorials of this sort about OSM workflows. Your passion for mapping shines through brightly! Thanks for your many contributions to our project.

Comment from hobbesvsboyle on 17 June 2024 at 00:23

@stevea Thanks! That means a lot to me.

Log in to leave a comment