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).
- 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.
- Zoom into the “Details” level so that road segments become interactive.
- Click on a road segment to open a popup dialog with more information.
- Click on one of the edit links to jump open the OpenStreetMap editor zoomed in on the particular “way” or the current map-view. *
- 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.