OpenStreetMap logo OpenStreetMap

Why are you mapping sidewalks as separate paths, rather than as tags on roadways?

While sidewalks as tags are adequate for many applications, they lack the ability to add detail to crossings and curbs. This information is vital for people who use visual and/or mobility aids. There is a project called OpenSidewalks which aims to bring equity to pedestrian data and provide routing tools for people whom have more specific mobility needs than what traditional routing tools can accommodate. Here is an excerpt from their mission:

Pedestrian pathways are critical infrastructure in urban environments that help people engage in their professional, community, and daily lives. To promote equitable urban growth, transit-oriented development, and resilient communities, we must give strategic, pedestrian-centric consideration to our sidewalks and pedestrian pathways, which are the dynamic connective tissue of our physical environments. Individuals experience the built environment in innumerable ways depending upon many factors, including their mobility. Therefore, their optimal path through the built environment is not necessarily the shortest or most direct route (despite the inherent Google Maps bias). Rather, their travel experience is influenced by static physical features, e.g., the availability of curb ramps and auditory signaling at crosswalks, as well as transient conditions (like precipitation). Automated routing applications can also make great use of this kind of data. For example, provided with such information, individuals prone to slipping on wet terrain could circumvent cobblestone sidewalk surfaces on rainy days, and individuals who require curb ramps can selectively identify routes that can accommodate their needs.

Additionally, much of Montréal already had sidewalks mapped as separate ways, and I am just expanding that coverage.

Guidelines

Sidewalks

Sidewalks should be:

  • Drawn in the middle of the physical sidewalk as it appears on satellite imagery,
  • Named with the name of the street that they are a part of,
  • Tagged with their material, typically concrete.

A basic sidewalk.

Here I have drawn a basic sidewalk and tagged it with highway:footway and footway:sidewalk by choosing this option for the line in the iD editor:

The sidewalk tag in iD

I then tag the sidewalk with the name of the street it runs alongside, and its surface material:

Adding tags in iD

The name is important for routing applications, which will otherwise say things like “turn right onto unnamed footpath.” The surface can be left blank if you don’t know, since it can be added later via StreetComplete.

If your sidewalk crosses any other highways such as alleys or driveway, you may see a warning like this:

An unresolved crossing warning in iD

Which brings us to…

Driveway/Alley Crossings

A crossing way should be drawn whenever a sidewalk crosses a:

  • School driveway
  • Alley (except for ruelles vertes, which can only be used by pedestrians and cyclists,)
  • Commercial access road or driveway
  • Residential driveway serving more than 5 units

Essentially, whenever a crossing has a high likelihood of encountering vehicle traffic. If your sidewalk is crossing something lower volume than this, such as a driveway for a single home, you can simply click “Connect using a crossing” now.

For the higher-volume crossings, we need to add a crossing segment. To add a crossing segment to a sidewalk, double click the sidewalk way where it connects to the driveway it is crossing to create a node. Then right-click that node and click the scissors icon, or press X to split the way at that node:

Splitting a way at a node in iD

Repeat this on the other side, so that you have a section of the sidewalk as wide as the driveway that is separated from the rest. Select this section so that we can modify its tags.

A section of sidewalk separated from the rest

Now change the way’s type by clicking its current feature type of “Sidewalk” in the left sidebar, and choose Unmarked Crossing.

The way's old feature type

The way's new feature type

You may now click “Connect using a crossing” in the Issues box, which will add the appropriate crossing node to the point where the lines connect. No curbs need to be added to the nodes where sidewalk and crossing connect.

The finalized crossing

Why do it precisely this way? I have noted a few benefits:

  • Sidewalks and their crossings remain much straighter than if you drew each section individually.
  • The name and surface type only need to be added once, rather than once per section.
  • Adding the crossing via the Issues box before changing the way type to Crossing results in doubled questions in StreetComplete, and it also adds curbs for no reason. This results in the fewest unnecessary StreetComplete questions.

Intersection Crossings

There are three kinds of crossings:

  • Unmarked, for when there are no lines on the road and the crossing is uncontrolled,
  • Marked, for when there are lines on the road and the crossing is uncontrolled,
  • With Pedestrian Signals, for when the crossing is controlled by a traffic light.

Crossings where one has to step down from the sidewalk and traverse the road should end in Curb nodes, to indicate to routing software that this is necessary. The curb nodes should not be directly connected to the sidewalk ways themselves, because this would wrongly signal to routing software that it is necessary to navigate a curb in order to continue along the sidewalk.

Here is an example of a completed intersection with sidewalks, footpaths, and crossings:

A completed intersection

Note how the top two corners have two curb nodes, to denote the different curb heights and exit points. This is atypical — most sidewalks have only one lowered curb that grants access to the crossings in both directions, like the bottom two corners in the picture.

Note also how the sidewalks do not directly connect to the curb node and are instead attached via a Footpath. This is to avoid routing software thinking that a curb needs to be navigated when one rounds the corner on the sidewalks.

Most detail for intersections is filled in via StreetComplete, including curb height, tactile paving, and details about controlled crossing lights. One important note about the question regarding tactile paving on sidewalks: it is not asking if there is tactile paving on either end, ie. at the curb, but rather if there is tactile paving along each side of the crossing, helping visually-impaired pedestrians to stay within the lines. This is very, very rare in Montréal and can almost always be answered “no.”

Finishing Up

Once you have drawn in the sidewalks, you’ll need to go back and remove the tags from the roads that denote sidewalks being there. The easiest way to do this is with the StreetComplete sidewalk overlay. Open up StreetComplete and open the menu, then select “Overlays”

The StreetComplete menu

Select the “Sidewalks” option.

A list of StreetComplete overlay options

You’ll see the map change, highlighting sidewalks in blue. Anywhere where there is both our separate sidewalks and a blue border on the road, we have to edit. Tap a road, and it will bring up a menu showing its sidewalk tags:

A road's sidewalks on StreetComplete

Tap each side where it shows a sidewalk, and change it to “Sidewalk, but displayed separately.”

A road with sidewalks tagged as being displayed separately in StreetComplete

After you upload your changes, the sidewalks will no longer be duplicated.

Email icon Bluesky Icon Facebook Icon LinkedIn Icon Mastodon Icon Telegram Icon X Icon

Discussion

Comment from Hugues Ross on 24 July 2023 at 22:47

Thanks for the clear explanation! I learned a few new tricks from this.

Comment from MxxCon on 25 July 2023 at 19:33

Sidewalks or crossings shouldn’t be named unless they explicitly have separate names from the adjacent street.

Comment from MxxCon on 25 July 2023 at 19:36

Overall Opensidewalks tagging schema is pretty outdated, needs overhaul and I wouldn’t use it without it getting updated.

Comment from Hugues Ross on 25 July 2023 at 20:47

Is there any available documentation on current best practices for this then? Regarding sidewalk naming, the wiki seems to suggest benefits and downsides to both doing it and not doing it before ending with “There is no consensus on whether this is necessary, and regional customs differ”…which I suppose makes a degree of sense, but is not the most helpful advice.

I care a lot about offering good local routing for pedestrians, so the more I can learn about this the better.

Comment from une abeille on 25 July 2023 at 23:34

I haven’t seen any other proposal for how to do it, and I’d rather defer to the organization that has the expertise in how to make the data useful for routing for people with different needs.

As for naming, I am following the convention that was already started in my area.

Comment from MxxCon on 25 July 2023 at 23:53

For example this definition is absolutely ridiculous https://github.com/OpenSidewalks/OpenSidewalks-Schema#crossings-do-not-connect-to-sidewalk-centerlines

The OpenSidewalks Schema defines Crossings as existing only on the street surface and Sidewalks as describing only the sidewalk centerline. There must therefore always be space between a Sidewalk and a Crossing. A Sidewalk and Crossing should be connected by a plain Footway.

What? 🤨🤦 These are absolutely ridiculous instructions and they create unnecessary chaos and mishmash of tags for sidewalks. Sidewalks extend all the way to the curb. There’s absolutely no need to create incomplete footpaths purely because Opensidewalks’ schema is incomplete or their routing software is incompetent. That is “tagging for renderer” and that’s wrong! Use it as inspiration to understand the need of mapping sidewalks, but not as direct guidelines on how to tag things.

Comment from une abeille on 25 July 2023 at 23:59

Your opinion is noted, but I will not be modifying my process.

Comment from Supaplex030 on 30 July 2023 at 06:38

Thanks for your guidelines. It is a good and clear tutorial, especially for beginners in the field working with iD Editor, who (as experience shows) make many mistakes when mapping sidewalk networks, e.g. do not connect them in a routable way.

For documentation: there is also a detailed tagging guide from Berlin (in German language): osm.wiki/Berlin/Verkehrswende/Gehwege.

There are, in my opinion, two completely unclear or controversial detail issues in this topic, on which we as a community still need to build and document a consensus:

1.) The issue of the “name” of sidewalks. Using “name” on sidewalks is controversial and rather atypical. The Berlin Guide works with the “AddOn” of the sidepath proposal and recommends “is_sidepath:of:name”, but thats also outdated, as this tagging will not be included in the next version of the sidepath proposal. So this question is completely unresolved.

2) The question of how far the crossing segments should extend or how the connecting pieces between the sidewalks and the carriageway areas should be tagged. From a physical point of view they belong to the sidewalk, from a routing and generalization point of view they should remain crossings. Some mappers split the line at the kerb, some don’t, etc. Here we need to get a feeling in the community and document a recommendation.

In Berlin, we also have a clear definition of when to use a crossing node and when not to. This can be easily defined (at least in Germany) by the right of way: If there are vehicles that have priority over pedestrian traffic on the crossing lane (i.e., pedestrians must yield right of way), then a crossing node is needed to indicate this. If, on the other hand, the vehicles have to give priority to the crossing pedestrian traffic, no crossing node is set. Therefore, there should normally be no crossing node on driveways.

Comment from RubenKelevra on 4 August 2023 at 14:49

One important note about the question regarding tactile paving on sidewalks: it is not asking if there is tactile paving on either end, ie. at the curb, but rather if there is tactile paving along each side of the crossing, helping visually-impaired pedestrians to stay within the lines. This is very, very rare in Montréal and can almost always be answered “no.”

You got that wrong, and everything you tagged that way. It’s exactly what you don’t think it is.

Comment from RubenKelevra on 4 August 2023 at 14:53

The OpenSidewalks Schema defines Crossings as existing only on the street surface and Sidewalks as describing only the sidewalk centerline. There must therefore always be space between a Sidewalk and a Crossing. A Sidewalk and Crossing should be connected by a plain Footway.

This makes actually perfect sense. I use highway=footway plus footway=link for those links.

Comment from une abeille on 4 August 2023 at 14:56

You got that wrong, and everything you tagged that way. It’s exactly what you don’t think it is.

Actually, it’s correct, and your hostility is not appreciated.

osm.wiki/Key:tactile_paving

On a pedestrian crossing highway=crossing, when the tactile paving is used in a line all across the crossing. Do not use tactile_paving=* on the way when only the two spots where the footway ends are paved differently.

Comment from RubenKelevra on 4 August 2023 at 15:04

Hey und abeille,

sorry if this sounded hostile - guess that’s because of the language barrier. This wasn’t my intention.

The issue is: The same tag has different meanings regarding nodes and ways.

If there’s a footway with highway=footway; footway=crossing and you add tactile_paving=yes, it means that there’s a tactile border on both sides of this way.

However if you have a point on a road with highway=crossing, tactile_paving=yes means if there are tactile markings on both edges where the crossing meets the curb.

Comment from une abeille on 4 August 2023 at 15:06

Which is what I have been doing.

Comment from RubenKelevra on 4 August 2023 at 15:31

Which is what I have been doing.

This is unlikely, because StreetComplete in not capable of asking for ways which are highway=footway and footway=crossing.

Instead it will only search for nodes with highway=crossing.

I’ve checked that.

Comment from MxxCon on 4 August 2023 at 17:02

Oh god people use footway=link on sidewalks 🤦 this is why OSM is still so inferior to Google maps when it comes to navigation. We will have no consistency and nobody will want to put effort into dealing with a million different edge cases of people mapping in their back yard.

Comment from une abeille on 4 August 2023 at 17:14

MxxCon, please stop being judgemental here.

Comment from MxxCon on 4 August 2023 at 17:28

I’m sorry but you made a public post discussing suboptimal tagging practices on public changesets and encouraging people to follow you. I will judge it and call it out.

Comment from une abeille on 4 August 2023 at 17:30

I am following standards set by OpenSidewalks. If you have a problem with their practices, please take it up with them.

You are also commenting from another city, decrying a standard we are already following here.

Comment from RubenKelevra on 4 August 2023 at 17:36

MaxxCon, I’m not using them on sidewalks, but to link sidewalks with other parts of the road.

That’s the purpose of this category and how it’s documented in the wiki.

Feel free to create a new standard so we can discuss over it. But just blaming people for doing exactly what we documented, is not how to improve anything.

Comment from RubenKelevra on 4 August 2023 at 17:38

Hey une abeille,

I’m sorry for the confusion the current description field for the quest in StreetComplete caused.

I’ve created a ticket to improve it on the project in Github - if you wanna take a loon, please?

https://github.com/streetcomplete/StreetComplete/issues/5173

Thanks!

Comment from MxxCon on 4 August 2023 at 17:47

RubenKelevra, if you want to talk about “standards” then =link value is not it either. It was only a proposal which was never finished, and on which OSM community never voted or agreed to. osm.wiki/Proposal:Tag:footway%3Dlink

You are also commenting from another city, decrying a standard we are already following here.

This is exactly the attitude I talked about in the last message🙄 if everybody will be mapping however they want in their own backyard no serious business will want to spend significant amount of money relying on OSM’s data. This is why they went off and created Overture maps! Not to deal with attitudes like this!

Comment from une abeille on 4 August 2023 at 17:51

I will not be dealing with your attitude further. Goodbye.

Comment from RubenKelevra on 4 August 2023 at 20:48

MxxCone I have no idea why you would dig out an proposal for a value of an established tag, which lists this value as a “common value”.

It’s been well documented.

As you seem to be here just to pick a fight, that’s also my last comment here to you.

Comment from MxxCon on 4 August 2023 at 21:00

RubenKelevra, twice now you misspelled my name. This looks intentional to me and extremely rude.

I did not “dig out” a proposal. It was submitted but never accepted by the community. And it’s nowhere near what one would call “established” tag. If according to your mapping style every sidewalk has to have 2 “link” segments, their count would be ~twice as many. Yet according to taginfo there’s only 0.3% of every sidewalks have any “link” segments. That’s not established. That’s extreme fringe.

Comment from RubenKelevra on 5 August 2023 at 12:12

Hey une abeille,

the SC team fixed the description field of the quest to make it clear that the tactile pavements on the end of the crossings are meant:

https://github.com/streetcomplete/StreetComplete/commit/a7119ca57b8b3a37c1b3fa759ac68fdbaa8ab551

I like to ask you to adjust your blog to avoid further confusion.

Do you need help reverting your changes to the map in the past?

Best regards,

Ruben

Comment from westnordost on 5 August 2023 at 12:19

https://github.com/streetcomplete/StreetComplete/issues/5173

As RubenKelevra’s interpretation is correct, I now improved the wording for StreetComplete.

It will now ask “Does this crosswalk have tactile paving on both ends?” when asking about whether to tag tactile_paving =yes or =no on the highway=crossing node.

I hope this prevents any further misunderstandings in the future.


Supaplex030 depiction of the situation is accurate:

As far as I know, there is either no consensus amongst mappers whether the footway=crossing extends to only till the curb or till the centerline of the connected sidewalk - or it is not documented clearly enough how it should be done (which would naturally be to connect the footway=crossing to the centerline of the sidewalk IMO, but eh, let’s not discuss this here 🤷‍♂️).

footway=link I’ve seen mostly be used for foot- or bike paths that do not really exist physically but are necessary to connect the paths for routing. Example: A road with sidewalks on both sides but for one reason or another, the sidewalk for one half of that road was tagged on the roadway itself (sidewalk=both) and the other half with separate highway=footway + footway=sidewalk ways. At the transition point between these two different ways to tag it, the separately drawn sidewalk ways must lead back to the roadway in order to remain routable. However, these ways do not really exist - there is no footway that leads from the sidewalk to the centerline of the road - and footway=link serves as an indicator for software to treat them accordingly.

I strongly discourage using footway=link for the “connector” of a footway=crossing and the centerline of a sidewalk because footway=link already carries the meaning explained above and such a “connector” is a different meaning altogether (i.e. it does exist physically).

Comment from RubenKelevra on 5 August 2023 at 12:46

@westnordost thanks for the effort!

Given my idea of the link between crossings and sidewalks: If you define a sidewalk as just beeing mapped by a center line and a crossing by ending at the curb, you could actually not connect both. So using a link for this (following this definition) not existing path.

In reality I prefer tagging a sidewalk as long as it’s not physically separate from the road - e.g. by grass. But this has certain downsides too. 🤷‍♂️

However mapping intersections as areas - where enough data is available to do so - is by all accounts the best solution, and results in nice renderings like this:

https://twitter.com/RubenKelevra/status/1673050940163645440

Comment from une abeille on 5 August 2023 at 13:09

If that is truly what is intended to be asked by this quest, then I am turning it off and will not be answering it again. This is entirely redundant information — StreetComplete already asks whether or not there is tactile paving on each curb — and it doesn’t seem to align with the OSM Wiki description of how to tag crossings, either. I’ll let y’all figure it out.

Comment from westnordost on 5 August 2023 at 18:05

Roland Olbricht did a talk on the SOTM 2022 that touched on the topic of barrier-free mapping:

https://media.ccc.de/v/sotm2022-18470-routing-not-only-for-prams

Comment from RubenKelevra on 5 August 2023 at 18:58

Hey une abeille,

true, it’s redundant if the curbs are mapped. But that’s only the case if the crossings are created as ways in addition to the nodes - as explained before. If there’s just a single node on the street marking a crossing, then only this quest will show up.

I don’t understand why you think that’s not aligning with the OSM wiki, could you explain what you mean by that? 🤔

Comment from Kevin Kofler on 6 August 2023 at 12:47

Mapping sidewalks as paths is inherently broken in countries such as Austria where it is legal to cross a street at any place other than immediately next to (and not on) a marked (zebra) crossing. (The exact distance that qualifies as “immediately next to” is codified in the law.) This means that there are infinitely many crossing opportunities, which is inherently incompatible with the practice of connecting the two sidewalks only at a finite number of crossings (usually only marked crossings) and leads to very broken pedestrian routing.

A sidewalk is not a footway, but an inherent part of the street, and must be tagged as such.

Comment from Kevin Kofler on 6 August 2023 at 12:50

(I have seen pedestrian routing come up with huge, completely unnecessary detours due to separately mapped sidewalks, asking to walk hundreds of meters up and down to the next zebra crossing instead of just crossing right there, which is perfectly legal around here. The fix is always the same: delete the bogus footways.)

Comment from RubenKelevra on 6 August 2023 at 13:09

The fix is always the same: delete the bogus footways.

Fixing broken routers by altering the data is not an encouraged behavior.

If the sidewalk is mapped correctly there’s no reason a router should not assume that you can cross the road at any point, as long as the road has sidewalk:right/left=separate tags.

Comment from Kevin Kofler on 6 August 2023 at 13:25

I disagree that it makes sense to expect routers to compensate broken data with error-prone magic.

The router sees a vehicle road and two footways. They are not related in any way, as we do not even use relations for this. Why should the router:

  1. interpret sidewalk:right/left=separate tags on a completely unrelated way (a vehicle-only road, given that the sidewalks are mapped separately, when it is trying to route pedestrians and hence should not even have to look at foot=no ways), then
  2. try and guess which footway(s) is/are geographically close enough to fit that vague sidewalk:right/left=separate specification, and then
  3. magically synthesize an infinite number of crossing opportunities orthogonally to the vehicle road from one footway to the other?

That is a completely unreasonable expectation. (Especially since this kind of magic behavior is not only hard to implement, but also error-prone and hard to debug.) If the road is one properly abstracted way with sidewalk:right/left=yes (and implicit or explicit foot=yes), the router can do a much better job much more easily.

And another important point is that sidewalk:right/left=yes can, but does not have to, be interpreted for more precise routing. The router can just tell you “walk along Foo Street”, or it can tell you something like “walk along Foo Street on the left side, cross Foo Street, walk along Foo Street on the right side” if you really need such detailed instructions. (Hint: You typically do not.) Whereas sidewalk:right/left=separate (along with separate “footway” sidewalks) is more of a meaning-changing “troll tag” that has to be interpreted to process the data accurately.

Comment from Kevin Kofler on 6 August 2023 at 13:28

Not to mention that not all mappers of separate sidewalks even bother putting sidewalk:right/left=separate on the road’s way(s) to begin with.

Comment from Kevin Kofler on 6 August 2023 at 13:36

(Sorry, one more addendum:)

What would be more realistic than the 3 steps above would be for routers to treat sidewalk:right/left=separate as foot=yes (overruling any foot=no specification) and completely ignore any footway=sidewalk ways, but that:

  1. also only works if sidewalk:right/left=separate is actually specified,
  2. still requires the router to interpret a meaning-changing troll tag (since foot=no + sidewalk:right/left=separate would actually mean foot=yes to the router), and
  3. completely defeats the purpose of tagging the sidewalks separately (so why bother doing it to begin with?).

So I think that is also not a very reasonable expectation for routers, even though it is more practical to implement than the more “correct” heuristics actually making use of the separate sidewalks.

Comment from une abeille on 6 August 2023 at 13:36

Alright y’all, I am unsubscribing from replies here. I want some of y’all to take a long, critical look at how you interact with others here.

This post is entitled “how I’m mapping sidewalks.” I never represented this as something that was a must-do for any area. So if mapping sidewalks as separate ways isn’t right for your area, then simply don’t do it. You don’t need to come here and inflict your opinion about the subject on others who are already doing the work to map them as such in their areas. We will not be reverting to having them as tags here. Entire townships have already been mapped this way, and this project is supported by local organizations.

I am following the standards for my area, and those set by the OpenSidewalks project. If you don’t like them, take that up with OpenSidewalks.

The way that several people have commented here has me seriously reconsidering contributing to the project, because the “community” here has been incredibly unwelcoming, and at times outright hostile.

Comment from user_5589 on 6 August 2023 at 18:12

“Alright y’all, I am unsubscribing from replies here. I want some of y’all to take a long, critical look at how you interact with others here.”

However you reply to a correct, polite comment with, “Actually, it’s correct, and your hostility is not appreciated.”

There was no hostility there in the comment you replied to. RubenKelvra replied politely, respectfully and correctly. MxxCon has been a little blunt in replies other than that on but that’s the only thing that comes anywhere near suboptimal interaction.

So I’ll say this concerning your conduct: pot meet kettle.

Oh and those screenshots are not from Streetcomplete. They’re from a separate fork of it that is not available in the Google Play Store and thus not accessible to most Android phone users.

Comment from O Fim on 7 August 2023 at 13:24

Muito bem explicado existe no YouTube um tutorial pra quem estiver interessado. https://www.youtube.com/watch?v=p-k0lVtplPA&list=PLAobl9xdYjxgFImq_R1sKFTu_nv6TbQ9z&index=19

Log in to leave a comment