Draft:Foundation/Local Chapters/United States/Pedestrian Working Group/Guide

From OpenStreetMap Wiki
(Redirected from PWG Guide Draft)
Jump to navigation Jump to search



This is a work-in-progress draft of a quick-start guide for pedestrian infrastructure mapping developed by the Pedestrian Working Group.

A work-in-progress draft of a full tagging schema for pedestrian infrastructure mapping is available here.

Questions? Email pedestrian@openstreetmap.us!


Anatomy of a Sidewalk

Our end-goal is mapping the pedestrian network for navigation as it exists in the real world.

Tiers

A tier-based system is used to communicate which features and tags are possible with various resources and necessary for which use cases, as follows, with further details below:

Icon Name Description Use Cases Required Resources
Circular icon containing a pedestrian symbol with a bronze-colored background.
Bronze Basic geometry and essential tags Basic everyday pedestrian navigation (Older) Low-quality aerial imagery
Circular icon containing a pedestrian symbol with a silver-colored background.
Silver Detailed geometry and tagging Accessibility-focused applications (Somewhat recent) Medium-quality aerial imagery and/or low-quality street-level imagery
Circular icon containing a pedestrian symbol with a gold-colored background.
Gold Micromapping and advanced tagging Advanced routers and visualizations (Recent) High-quality aerial and/or street-level imagery or in-person survey

If, for example, you want to map pedestrian infrastructure so that it can be used for basic everyday routing and only have low-quality aerial imagery available, you would include only the features and tags marked with a Bronze Tier symbol.

If you have access to high-quality imagery and want to map pedestrian infrastructure so that it can be used by accessibility-focused routers, you would include all features and tags marked with a Bronze Tier symbol or a Silver Tier symbol.

Mapping Guidelines

Bronze tier:

The pedestrian network is composed of many different kinds of objects and representing all of this information can get complicated fast. Mapping all of this information can get even more complicated if the sources you have access to in the area do not show enough of what you are trying to map, like if the aerial imagery isn't high enough resolution. Since something is far better than nothing, mapping what you can to the best of your ability is better than not doing so, so if you are new to all of this (including if you have experience mapping other features but not the pedestrian network) or are working on an area with aerial imagery with low enough resolution that mapping with too much detail is impossible without survey or just want the data now this is the perfect place for you. In Bronze tier the goal is to add the bare minimum to have a useful pedestrian network in a way that is doable even if the sources available aren’t the best. I will note though that just because a tag or way starts in silver tier or above doesn’t mean that you cannot add it in Bronze tier your self, for example if you want to add the surface of pedestrian features while you are mapping are area to bronze feel free, there is nothing stopping you; The point of the tiers is the minimum tags required to meet that standard but nothing more or less.

So then, what goes in Bronze tier, well, to be able to successfully get from A to B using separately mapped pedestrian infrastructure you need to know where you can walk, essentially where the different footways are and where you can cross roads. So in bronze tier we map sidewalks, crossings and stair cases because those are the bare minimum needed to properly get around, everything else is just more details past this point. So let's start with sidewalks, what is the bare minimum we need to know about a sidewalk for it to be useful? Well all we really need to know about a sidewalk is that it exists, aka its shape/position since while more information is helpful it is not required to get from one point along the sidewalk to another. So in OSM terms all we need is a centerline way tagged as highway=footway + footway=sidewalk. Since if the quality of the aerial imagery is not good enough further information like surface=* or lit=* can be essentially impossible to determine so we cannot reliably assume we would be able to add more tags with the source requirements for this tier. As a note, it is advisable to also add other paths when you see them, such as the walking path inside of a park.

For crossings to be useful, as with sidewalks, we need to know where they are located, essentially we need a way connecting one sidewalk to another so we know where we are allowed to cross roads. As with sidewalks in OSM terms this means that you need a way connected to sidewalks or other crossings on each end of the crossing (aka you don’t have to add the connector ways between a sidewalk and the road, but the crossing should be connected to the sidewalk or a different crossing way) tagged as highway=footway + footway=crossing and a vertex shared between the road and crossing way at the point where they intersect tagged as highway=crossing. Since bronze tier should be achievable with lower quality imagery while you may not be able to tell exactly what the markings on a crossing are you would usually be able to tell that there is some kind of marking there so should be able to set crossing:markings=yes or no (whether or not a crossing has markings to indicate where you should cross tagged as yes and no, more specific values are added in silver), same with signals, you should be able to set crossing:signals=yes or no (whether or not a crossing has signals tagged as yes or no, more specific values are added in diamond). crossing:markings=* and crossing:signals=* are also really essential information about a crossing so are important to have to any capacity. Below I have put two example images of mapping some sidewalks and crossings to bronze tier:

Tags Example Image
The sidewalk:

highway=footway

footway=sidewalk

The crossing way:

highway=footway

footway=crossing

crossing:markings=yes

crossing:signals=no

The crossing node:

highway=crossing

crossing:markings=yes

crossing:signals=no

Tags Example Image
The sidewalk:

highway=footway

footway=sidewalk

The crossing way:

highway=footway

footway=crossing

crossing:markings=yes

crossing:signals=no

The crossing node:

highway=crossing

crossing:markings=yes

crossing:signals=no

The two examples above are the most common you will see while mapping pedestrian features, or at least some combination of the two.

As mentioned at the beginning of bronze tier when mapping to bronze tier and you come across a staircase you should also map that staircase as a separate way tagged as highway=steps. Below is an example of some steps mapped to bronze tier:

Tags Example Image
The Stair way:

highway=steps

Silver Tier:

Because in silver tier it is assumed that you have access to aerial imagery that is of a higher quality and will have some amount of experience mapping pedestrian features you will usually be able to tell where kerb cuts are so crossing ways should be separated from the sidewalk centerline (unless the sidewalk just ends at a road) with a connector in between the crossing way and the sidewalk centerline tagged the same as the sidewalk centerline (though surface may vary and the exact tagging for these has not been fully settled yet). In silver tier sidewalks are tagged as highway=footway + footway=sidewalk + surface=*. In silver tier crossing ways should be mapped from kerb vertex (kerb cut) to kerb vertex, essentially only within a road’s area. As with bronze tier, silver tier ways are tagged as highway=footway + footway=crossing and vertices are tagged as highway=crossing. Since silver tier assumes decent quality aerial imagery and low quality streetside imagery you should be able to tell what the markings on a crossing are so for both crossing ways and vertices you should start to tag crossing:markings=* that are more specific than yes (for cases where the bronze tier tag is yes). In silver tier you tag surface=* on crossing ways and tactile_paving=* on vertices. In silver tier we also start to tag the kerb vertices as barrier=kerb + kerb=** + tactile_paving=**. Below is shown the two examples of intersections from Bronze tier but mapped to silver tier:

Tags Example Image
The sidewalk:

highway=footway

footway=sidewalk

surface=concrete

The crossing way:

highway=footway

footway=crossing

crossing:markings=lines

crossing:signals=no

surface=asphalt

The crossing node:

highway=crossing

crossing:markings=lines

crossing:signals=no

tactile_paving=yes

The kerb vertices:

barrier=kerb

kerb=lowered

tactile_paving=yes

Tags Example Image
The sidewalk:

highway=footway

footway=sidewalk

surface=concrete

The crossing way:

highway=footway

footway=crossing

crossing:markings=lines

crossing:signals=no

surface=asphalt

The crossing node:

highway=crossing

crossing:markings=lines

crossing:signals=no

tactile_paving=yes

The kerb vertices:

barrier=kerb

kerb=lowered

tactile_paving=yes

In silver tier crossing islands should also be mapped as separate geometry meaning that crossing:island=* should be tagged on crossing ways and vertices as either separate (when the traffic island is mapped separately) and no. The crossing island way should be separated from the crossing way and tagged as highway=footway + footway=traffic_island along with surface=*. The following is an example of bronze tier vs silver tier crossing with a traffic island:

Tags Example Image (bronze) Example Image (silver)
Crossing way (bronze):

highway=footway

footway=crossing

crossing:markings=yes

crossing:signals=no

crossing:island=yes (optional)

Crossing way (silver):

highway=footway

footway=crossing

crossing:markings=yes

crossing:signals=no

crossing:island=separate

surface=asphalt

Traffic island (silver):

highway=footway

footway=traffic_island

surface=concrete

All other tags are the same as previous examples

For staircases the geometry does not significantly change when moving to silver tier from bronze but you get many more tags to add. The tags added in silver tier to staircases are surface=*, incline=* (indicates the incline of the staircase, in silver we only tag if you are going up or down along the staircase, not percent), ramp=*(just yes and no, indicates whether or not a staircase has a ramp, separate is in gold) and handrail=* (just that the handrail exists on any side, specifying the side is gold tier). Below is an example of what the example from Bronze tier of a staircase looks like on the ground (a photo of it taken at ground level) and how to tag it at silver tier:

Tags Example Image
the staircase way:

highway=steps

incline=down

handrail=yes

ramp=yes

surface=concrete

In silver tier access aisles also get mapped, access aisles do not have to be mapped in bronze tier but do for silver. Along with highway=footway + footway=access_aisle to specify that a way is an access aisle, silver tier also requires surface=* and access_aisle:markings=* (indicates the type of markings present on an access aisle) for silver tier. Below is an example of access aisles being mapped to silver tier:

Tags Example Image
Access aisle:

highway=footway

footway=access_aisle

surface=asphalt

access_aisle:markings=ladder:skewed

As a note, ideally the access aisle way is mapped within the painted markings,

since there is a clear connection between the two access aisles they are connected by an unmarked crossing (crossing:markings=no).

For roads, you should tag which side of road you have added separately mapped sidewalks, or that there isn't any sidewalk on a particular side of a road, tagging that a particular side of a road doesn’t have a sidewalk is actually important because like that others using and analyzing the data in an area can know for certain that there is non and not that it just hasn’t been mapped. To tag the side of a road that has a sidewalk tag it with sidewalk:(left|right|both)=*, as an example in the following image the roads would be tagged as sidewalk:left=no + sidewalk:right=separate (where right is R and left is L):

Elements

Included below are the Bronze Tier and Silver Tier tags, which represent a good level of detail to aim for while balancing the amount of work required to map pedestrian infrastructure in detail.

For a full listing of tags and their tier classifications, refer to the full schema here.

Sidewalks

  • way Sidewalk Way Tagging:
highway=footway + footway=sidewalk - Indicate sidewalk location
surface=* - Sidewalk surface material
surface=concrete - Concrete surface material
surface=asphalt - Asphalt surface material
surface=* - Any other applicable value

Crossings

  • way Crossing Way Tagging Only:
highway=footway + footway=crossing - Indicate crossing location
  • node Crossing Node Tagging Only:
highway=crossing - Indicate crossing location
tactile_paving=* - Specify tactile paving presence at curb nodes
tactile_paving=yes - Tactile paving is present at both curbs
tactile_paving=partial - Tactile paving is present at only one curb
tactile_paving=no - Tactile paving is not present at either curb
  • nodeway Crossing Node and Way Tagging:
crossing:markings=* - Specify presence and type of markings
crossing:markings=no - No markings
crossing:markings=yes - Markings present, type unspecified
crossing:markings=zebra - Zebra markings
crossing:markings=lines - Lines markings
crossing:markings=* - Any other applicable value
crossing:signals=* - Specify presence and type of signalization
crossing:signals=no - No signals
crossing:signals=yes - Signals present
crossing:island=* - Presence of pedestrian island
surface=* - Crossing surface material
surface=concrete - Concrete surface material
surface=asphalt - Asphalt surface material
surface=* - Any other applicable value

Curbs

  • node Curb Node Tagging:
barrier=kerb - Indicate curb location
kerb=* - Specify curb type:
kerb=raised - Raised curb
kerb=lowered - Curb ramp
kerb=flush - Flush curb
tactile_paving=* - Specify tactile paving presence
tactile_paving=yes - Tactile paving is present
tactile_paving=no - Tactile paving is not present

Islands

  • way Traffic Island Way Tagging:
highway=footway + footway=traffic_island - Indicate traffic island location
surface=* - Traffic island surface material
surface=concrete - Concrete surface material
surface=asphalt - Asphalt surface material
surface=* - Any other applicable value

Access Aisles

  • way Access Aisle Way Tagging:
highway=footway + footway=access_aisle - Indicate access aisle location
access_aisle:markings=* - Specify presence and type of markings
access_aisle:markings=no - No markings
access_aisle:markings=yes - Markings present, type unspecified
access_aisle:markings=zebra - Zebra markings
access_aisle:markings=ladder:skewed - Skewed ladder markings
access_aisle:markings=* - Any other applicable value
surface=* - Access aisle surface material
surface=concrete - Concrete surface material
surface=asphalt - Asphalt surface material
surface=* - Any other applicable value

Roadways

  • way Roadway Way Tagging:
highway=* - Indicate roadway location
sidewalk:side=* (sidewalk:left=* | sidewalk:right=* | sidewalk:both=*)
sidewalk:side=no - No associated sidewalk present
sidewalk:side=separate - Associated sidewalk is present and mapped as separate geometry

In-editor Examples

In many cases, centerlines break down as a model for complex intersections of footways. At intersections of three or more footways, it is often necessary to position the intersection point at the centroid of each incoming way. At the top left of this image, the intersection of seven converging footways is smoothed by creating multiple intersection points. When mapping intersections like this, it's important to consider directions of travel: if a pedestrian were to enter this intersection via way A and exit via way B, could their route be reasonably drawn along these centerlines?
In this example, two access aisles enter a parking lot across from each other. While a footway=access_aisle way ends where painted markings end, it is valuable here to connect the access aisles with an unmarked crossing to denote this navigable route.
At this corner, two perpendicular sidewalk centerlines cross but individually continue to meet the curb at two locations. Notably, one direction of travel has a curb ramp with tactile paving while the other one does not.
In this example, it makes sense to have the sidewalk centerlines at an intersection extend out to respective curb ramps. However, their ways are still split similar to "stubs" in other examples. This is so that we can tag surface=concrete rather than surface=paving_stones where appropriate.
A typical intersection corner with sidewalk centerlines mapped. Two perpendicular sidewalks converge at a single curb ramp, with a sidewalk stub connecting out to a lowered curb node and crossing ways.
Here, two curb ramps are installed at a single corner to serve crossings in different directions. Multiple stub ways are used to connect them to sidewalk centerlines to the north.
An example of a rounded corner with two curb ramps. The ramps are separated by a curb (not mapped). Separate sidewalk stubs connect each ramp to the sidewalk centerline.
Sometimes pedestrian infrastructure elements interact with driveways. Here, a marked crossing ends at a driveway (highlighted way) on its east side. The driveway apron in this example qualifies as a lowered curb.

PWG Guide and PWG Schema Releases

PWG Guide Releases
Latest Permanent link to latest version:
osm.wiki/PWG_Guide
Draft Permanent link to latest draft:
osm.wiki/PWG_Guide_Draft
Compare Permanent link to compare latest version and draft:
osm.wiki/PWG_Guide_Compare
Talk Permanent link to talk page:
osm.wiki/PWG_Guide_Talk
Version Date Changelog
1.0.1 2026-01-30 • Fix inclusion of footway tag on crossing nodes
1.0.0 2025-11-19 • Initial release
1.0.0-beta 2025-05-23 • Initial pre-release
PWG Schema Releases
Latest Permanent link to latest version:
osm.wiki/PWG_Schema
Draft Permanent link to latest draft:
osm.wiki/PWG_Schema_Draft
Compare Permanent link to compare latest version and draft:
osm.wiki/PWG_Schema_Compare
Talk Permanent link to talk page:
osm.wiki/PWG_Schema_Talk
Version Date Changelog
1.0.1 2026-03-28 • Fix inclusion of surface and width tags on crossing nodes
1.0.0 2025-11-19 • Initial release
1.0.0-beta 2025-05-23 • Initial pre-release