Proposal:Deprecate crossing=zebra in favor of crossing:markings
Deprecate crossing=zebra in favor of crossing:markings | |
---|---|
Proposal status: | Proposed (under way) |
Proposed by: | Bauer33333 |
Tagging: | crossing=uncontrolled + crossing:markings=zebra |
Statistics: |
|
Draft started: | 2024-05-30 |
RFC start: | 2024-06-28 |
Proposal
This proposal aims to replace most cases of crossing=zebra with the more popular[1] combination of crossing=uncontrolled + crossing:markings=zebra and as appropriate with crossing_ref=zebra.
Rationale
Tl;dr:
ID users added crossing=zebra to all kinds of marked crossings over a span of about five years. In a random sample area in the US this led to only 5% of all crossings tagged with crossing=zebra in 2022 to actually have zebra markings. There exist better tags now without this issue and that also don't have the issue of mixing crossing type and crossing markings in one tag. Just using the crossing tag fails even in its home country UK to represent the different zebra types[2].
Long version:
Crossings in OSM were originally described by their british animal names. Applying this UK-centric tagging scheme in other countries led to quite some struggle and not really fitting tag selections. Mappers were confused if eg. crossing=zebra describes the markings on the ground, the right of way situation, the lack of traffic lights or something else. A proposal approved in 2008[3] deprecated all the crossing animals including the zebra. Instead crossing=traffic_signals and crossing=uncontrolled was introduced to describe the presence of traffic lights with the crossing=* tag only. To handle the country specific configurations and implied additional features crossing_ref=* was introduced. The value would be the region specific name of such a crossing setup, such as zebra crossings in the UK with their implied features.
While crossing_ref=* started to get some traction, probably not as much as it could due to the lack of documentation of the implied features. The deprecation of the animal values in crossing=* did not and they continued to be used. After an edit war on the crossing=* page they were documented as UK only shorthands, initially with a warning about the deprecation[4] which got lost over the years[5]. The lack of deprecation and multiple systems in use at the same time lead to confused mappers, sometimes adding multiple values to a crossing, like traffic signals and zebra. Due to a lack of better tags crossing_ref=* was also used to describe marking types instead of crossing types.
Then in 2014 iD added a preset for crossing=zebra[6]. This lead to a massive increase in the amount of crossing=zebra: https://taghistory.raifer.tech/#***/crossing/zebra The issue with that was that iD called the preset not "zebra crossing" but "marked crosswalk", based on the legal status and not the marking type since all UK marked crossings have zebra stripes. Outside of the UK it was used on effectively everything that would be tagged as crossing:markings=yes today. I've found crossing=zebras from that era even on signalized crossings or ones that were only marked by a row of cobblestones. While some countries where the majority of crossings were in fact zebras could keep that mass mistagging somewhat under control it was a lost case in areas with multiple marking types.
After this went on for five years ID tried to fix the situation by giving a deprecation warning in the editor that suggested to retag crossing=zebra with crossing=marked. This got a lot of criticism, on the one hand because crossing=marked had almost no users compared to crossing=uncontrolled and on the other hand because mappers considered the zebra information lost. But that info was pretty much lost already, with over 90% of the crossing=zebra worldwide added during the mistagging period completely ruining the original UK meaning of the tag. ID removed the undiscussed deprecation about a year later and only hid the preset that contains crossing=zebra instead.
In 2022 crossing:markings=* got approved and usage of it skyrocketed almost immediately, as seen in the graph on the right. The new tag allowed to clean up crossing_ref=* from the cases where it was used to describe the crossing markings only, leading to a massive global drop. It has a clear definition of being for crossing types now. The new tag gained massive traction, as of May 2025 the just about one and half a year old crossing:markings=zebra had already about twice the uses of the ten year old crossing=zebra with no visible trend of slowing down. Meanwhile crossing=zebra has seen almost no growth in recent years. In regions without a lot of crossing=zebra the amount seems to decrease, while it rises in areas with almost no crossing=zebra, what is an indicator for mostly new mappers picking that tag from the tag suggestions, since it seems to describe a true zebra crossing better at a first glance if you don't know that with the amount of skunking it means basically the same as crossing:markings=yes in some areas. With the low amount of crossing=zebra tags there have also been single editors doing noticeable shifts in the numbers[7]. Compared to the continuing growth of other crossing tags the zebra one remains overall flat, especially in 2024.


For example in Hamilton County, Ohio only 7 crossings have been retagged to crossing:markings=zebra since late 2022 while 129 got an value describing an other kind of marking[9].
So we end up with a tag which meaning differs depending on the area as well as the time it was added to an object.
Most data consumers can't handle that and internally replace everything that contains zebra as a value with zebra crossing, even if it was not intended to be one by the mapper back then or are just replacing it with crossing:markings=yes[10]. Additionally it can also not distinguish between legal and informal zebras which exist eg. in the UK[2].
Therefore I'm advocating to deprecate crossing=zebra and use the appropriate value of crossing:markings=* to describe the crossing markings of crossings and crossing_ref=* to describe the legal type of crossings instead.
Additionally this would reduce the amounts of different tagging schemes for one thing, there are currently three different keys with a zebra value and these can be combined with various multiple different crossing=* values as well as seen in the flowchart on the side.
Some countries have already taken this step without issues, eg. France or Russia.
Tagging
mapping new zebra crossings
Some people have voiced concerns about two tags needing more effort than using one tag. The same one click action can be achieved using presets. The presets would need to be named appropriately (eg. uncontrolled zebra crossing) to avoid confusion with light controlled zebra marked crossings. Some editors like Rapid already offer presets with marking styles
Countries with a legal zebra crossing
In regions with a legally defined zebra crossing type the editors would offer a zebra preset containing crossing=uncontrolled + crossing:markings=zebra + crossing_ref=zebra
Countries without a zebra crossing type
In regions without a legally defined zebra crossing type the editors would offer a zebra preset containing crossing=uncontrolled + crossing:markings=zebra
.
Dealing with already existing crossing=zebras
In the areas where crossing=zebra has been used to describe all kinds of marked crossings, no matter if they even feature anything remotely similar to a zebra crossing, automatically adding crossing:markings=zebra would cause more harm than good there. In areas where crossing=zebra has been used on true zebra crossings only retagging them automatically with crossing:markings=yes would lead to a loss of the zebra information. So a global automated edit is impossible.
Avoiding this issue would be just a deprecation warning without an automated replacement leading to a manual review. In case an automatic retagging is wanted instead there would be a need for a list of areas where crossing:markings=zebra is preferred and where crossing:markings=yes is a better way to go. From what I've seen generally areas that use American English suffer more from the misnamed preset than other language areas. For those areas a MapRoulette challenge or similar would be nice as well to figure out which crossing=zebras actually have zebra markings and which have other markings.
The cases where the crossing values conflict have often seen multiple values separated by a semicolon and would need to be manually reviewed as well.
Which crossing=* value to choose?
Instead of crossing=uncontrolled crossing=marked could be used instead, but the former has seen a lot more usage recently: https://taghistory.raifer.tech/?#***/crossing/uncontrolled&***/crossing/marked. Note that while in normal English crossing markings are usually a kind of crossing control, the OSM definition only sees crossings with traffic lights as controlled crossings.
Examples
Here is an overpass turbo query to find crossings currently tagged in the proposed way: https://overpass-turbo.eu/s/1MfQ
Rendering
✓ Straßenraumkarte Neukölln uses all three zebra tags and converts them to one internally, so they won't see any effect.
✓ OSM2World uses crossing:markings=*. crossing=zebra and crossing_ref=zebra serve only as a fallback[11].
✓ The OpenSidewalksScheme converts crossing=zebra to crossing:markings=yes, it already requires crossing:markings=zebra for it to see a crossing as having zebra markings[12].
✓ OSMAnd is listed as a tag user on taginfo, but I was unable to find any mention of crossing=zebra in their code, only lots of crossing:markings=zebra. Seeing them not listed at that tag their taginfo file is probably outdated and they deprecated crossing=zebra.
OSMCarto does not render crossings in any special way.
Current editor status
adding crossing=zebra | adding crossing=uncontrolled/crossing=marked + crossing:markings=zebra | encountering a crossing=zebra | |
---|---|---|---|
iD
(Go Map!!) |
Search for the preset of a marked crossing. Replace crossing=uncontrolled with crossing=zebra.
Due to the global amount of crossing=zebra it is listed as the fifth value option but not highlighted in blue as a recommended tag. |
Search for the preset of a marked crossing. Replace crossing:markings=yes with crossing=zebra.
ID offers a drop down with icons of the different marking styles. |
An otherwise hidden preset is shown. No action recommended |
Rapid | Search for the preset of a marked crossing. Replace crossing=uncontrolled with crossing=zebra.
Same as in ID crossing=zebra is listed as the fifth value option, but crossing=* is not one of the fields shown in the preset, so you need to go down to the actual tags. |
There is a preset for crossing=marked + crossing:markings=zebra | Adding crossing:markings=zebra is recommended. crossing=zebra is left untouched. |
StreetComplete | crossing=* is not added by StreetComplete. | crossing=* is not added by StreetComplete. Answering a quest about crossing markings will add crossing:markings=yes. | It will not ask a question about crossing markings and leave crossing=* as it is[13]. |
Vespucci | crossing=zebra needs to be typed manually, not part of a preset. | After selecting the crossing preset crossing=uncontrolled can be selected with a checkbox, crossing:markings=zebra from a dropdown. | "zebra" appears as a new unlocalised bullet point on the checklist, no further actions. |
JOSM | Taginfo lists no use of crossing=zebra for any of the know preset projects, so I assume that the tag is already unsupported. |
Features/Pages affected
Wiki pages affected:
External discussions
Forum thread: https://community.openstreetmap.org/t/rfc-feature-proposal-deprecate-crossing-zebra-in-favor-of-crossing-markings/115293
UK community forum discussion: https://community.openstreetmap.org/t/zebra-crossing-deprecation-proposal/115300
Mailing list: https://lists.openstreetmap.org/pipermail/tagging/2024-June/067963.html
Dutch discussion about zebras in general, resulted in eg. crossing:markings=zebra being added on all zebra crossings in the Netherlands: https://community.openstreetmap.org/t/zebra-crossing-in-nederland-ndw/121871
Historic discussions:
Note that these discussions are older than crossing:markings=*.
2 meaning for crossing=zebra: https://www.mail-archive.com/tagging@openstreetmap.org/msg39997.html
automated edits seem to remove crossing=zebra drastically: https://www.mail-archive.com/tagging@openstreetmap.org/msg55098.html
Comments
Please comment on the discussion page.
References
- ↑ 1.0 1.1 https://dashboard.ohsome.org/#backend=ohsomeApi&groupBy=tag&time=2022-09-01T00%3A00%3A00Z%2F2024-07-29T12%3A00Z%2FP1M&measure=count&filter=crossing%3Dzebra+or+crossing%3Amarkings%3Dzebra+and+crossing%3Duncontrolled+or+crossing%3Amarkings%3Dzebra+and+crossing%3Dmarked&groupByKey=crossing&groupByValues=&bboxes=-167.3452748%2C-58.8144239%2C176.4870434%2C80.6470347
- ↑ 2.0 2.1 Crossings in the United Kingdom
- ↑ https://wiki.openstreetmap.org/w/index.php?oldid=132309
- ↑ https://wiki.openstreetmap.org/w/index.php?oldid=139165
- ↑ https://wiki.openstreetmap.org/w/index.php?oldid=1012147
- ↑ Tag:crossing=zebra#Editors
- ↑ https://community.openstreetmap.org/t/rfc-feature-proposal-deprecate-crossing-zebra-in-favor-of-crossing-markings/115293/63
- ↑ https://taghistory.raifer.tech/?#***/crossing%3Amarkings/zebra&***/crossing/zebra&***/crossing_ref/zebra
- ↑ https://community.openstreetmap.org/t/rfc-feature-proposal-deprecate-crossing-zebra-in-favor-of-crossing-markings/115293/17
- ↑ https://github.com/OpenSidewalks/OpenSidewalks-Schema/blob/ea9c9e131ac426c7da6eacbd5d7c945bbe1851fc/README.md?plain=1#L1134
- ↑ https://github.com/tordanik/OSM2World/blob/a07943134bfba721502e2225ac1389edbb610bc1/core/src/main/java/org/osm2world/world/modules/RoadModule.java#L734
- ↑ https://github.com/OpenSidewalks/OpenSidewalks-Schema/blob/ea9c9e131ac426c7da6eacbd5d7c945bbe1851fc/README.md?plain=1#L1134
- ↑ https://github.com/streetcomplete/StreetComplete/pull/5471#issue-2115698130