Screen shot of the Open Street Map.

The road data analyzed by Curvature is sourced from OpenStreetMap (OSM). OpenStreetMap is an open-data digital map of the world (similar in spirit to Wikipedia) created by millions of volunteers each improving portions of the map big and small. Anyone can edit the OpenStreetMap and to date over 2 million people have. As an open-data project, the raw points, lines, and tags in the data are usable by anyone without license fees, making projects like the open-source Curvature program possible. Curvature would not exist without OpenStreetMap and all of the contributors who have mapped the roadways of the world thus far.

Improving the data

Because Curvature uses the OpenStreetMap — a world-map that anyone can edit — as its data-source, you too can improve the map and thereby improve Curvature’s maps. For more information about the fabulous OpenStreetMap project, see the OSM help page.

While there are many, many ways to improve the OpenStreetMap, there are several particular types of edits that are a big help in improving the results shown by Curvature:

  • adding surface tags
  • fixing improper highway type tags
  • smoothing jiggly segments
  • adding stop and yield signs, traffic lights, pedestrian crossings, and traffic-calming measures

As you browse the Curvature map and encounter roads with incomplete or wrong data, you can click through to edit them in OpenStreetMap and the Curvature map will then reflect your changes when it next updates that region (about once a month).

When zoomed into “details” level, clicking on a road section opens a popup dialog with links to edit OpenStreetMap at the current view or edit each individual “way” that makes up road section.
  1. If you’ve never edited OpenStreetMap before, sign up for an OSM account and go through the Beginners Guide to familiarize yourself with OSM concepts.
  2. Zoom into the “Details” level so that road segments become interactive.
  3. Click on a road segment to open a popup dialog with more information.
  4. Click on one of the edit links to jump open the OpenStreetMap editor zoomed in on the particular “way” or the current map-view. *
  5. Make your changes in OSM and save them as a change set. You’re done! The next Curvature update of this region will make use of your edits.

* Experienced mappers may wish to use the settings panel in Curvature to select the JOSM editor which will change the edit links to open the area in JOSM if it is open and running with its Remote Control feature enabled.

Adding surface Tags

In some parts of the world almost every road segment (a “way” in OSM parlance) has an appropriate surface tag applied to it, allowing Curvature to filter out the unpaved roads — which are often small and very twisty! At the time of this writing however, many roads do not have a surface tag and so Curvature can’t filter them out, resulting in the really twisty paved roads getting hidden among hundreds or thousands of unpaved roads. You can help improve the Curvature results by clicking through to edit the road segments in OpenStreetMap and adding appropriate surface tags based on your memory of traveling the road, the satellite imagery shown in the OpenStreetMap editor, or other allowed data-sources.

Fixing improper highway-type Tags

In the United States, much of the OpenStreetMap road network was imported from the U.S. Census Bureau’s TIGER data-set. While this data-import provided a rich starting-point for mapping, it mis-categorized most small roadways as highway=residential rather than using proper highway tags. Roads that are unimproved forestry tracks or agricultural tracks (not to be confused with improved gravel or dirt roads) can be changed to highway=track and they will be filtered out of the Curvature. Similarly, mis-categorized driveways can be changed to highway=service + service=driveway and they will be filtered out.

Smoothing Jiggly Segments

Aside from improper surface or type tagging, the last big reason roads will get improperly included in the Curvature output is when they are in actuality straight roads, but are defined by many close-together points that shift back-and forth across the road width. This can often happen when a road was surveyed using a GPS unit that didn’t have a good signal, causing the coordinates recorded to jump around. You can identify ways like this because they look straight but have high curvature-values.

A good way to clean up jiggly segments is to carefully remove and shift the points that make up the road so that they smoothly follow the road as seen in the satellite imagery.

Adding signs, traffic lights, crossings, etc

The goal of Curvature is to find fun twisty roads to ride or drive on. Until now, Curvature looked only at the geometry of roads, their highway classification (motorway, primary, secondary, …, parking aisle, driveway), and their surface (paved/unpaved). While this has worked well overall there are many roads in the world that do zig and zag with sharp corners, but do so in dense urban areas with many conflict zones. Potential conflicts or collisions at intersections, with merging traffic streams, at pedestrian crossings, and along street-side parking require much concentration and can make these roads much less “fun” to ride than a road with the same geometry would be in a less urban environment. A sharp 90° corner on a rural road is a lot of fun to swoop through, the same geometry at an intersection with a stop sign or traffic signal is a delay.

To ensure that these urban zigs and zags don’t masquerade as fun roads, I’ve recently added a filtering stage to Curvature that zeros-out the curvature rating for 30 meters (~100 feet) in both directions from each conflict point along the roadway. By zeroing out curves near these conflict zones Curvature can avoid suggesting roads that really aren’t very “fun”.

Point features (nodes):

  • highway=stop, highway=give_way
    Stop signs or all-way stop intersections, and yield signs. Curvature is specifically looking for the nodes on the highway that indicate stop position. Sometimes the actual signpost itself is additionally mapped at its physical location, but the signpost is not evaluated by Curvature.
  • highway=traffic_signals
    Stop positions at signalized intersections.
  • highway=mini_roundabout
    Small roundabouts that can be driven over by large vehicles. These often have a significant amount of geometric deflection of the travel path for traffic-calming purposes, but care when merging negates the fun-factor.
  • highway=crossing
    Pedestrian crossings — it is safest to go slow and watch for pedestrians rather than focusing on cornering.
  • traffic_calming=*
    Speed bumps, rumble strips, pinch-points, and other sorts of traffic calming measures.

Linear features (ways):

  • junction=roundabout, junction=circular
    Roundabouts and circulars have a high degree of directional change, but the care needed when merging negates the fun-factor.
  • parking:lane=*
    If there is parking along the road, one needs to go slow and look for doors opening, vehicles pulling-out, etc.
  • traffic_calming=*
    Rumble strips, chicanes, and other linear versions of traffic-calming features.

Comments are closed.