That staircase reminds me of one I’ve mapped between two buildings, with a breezeway at each level serving as a landing. It can be tricky to get right, so I understand the desire for reducing the repetition to a tag. However, it’s unclear to me that routers are prepared to correctly analyze the topology of ways connected to repeat_on=*
-tagged ways.
To map a spiral staircase without a special tag, start out by mapping it as a single way that crosses over itself multiple times. To prevent routing issues, avoid connecting the way to itself. iD disallows such self-intersections by default, but you can hold down Alt (⌥ Option on macOS) to circumvent this check. For convenience, I temporarily map each “level” of the spiral at an offset so I can see them clearly.
Routers and renderers generally have no problem with self-intersections, as long as nothing else connects to the spiral part of the way up. However, external validators like Osmose yell about self-intersections, because sometimes spirals can overlap in nonobvious ways, as in the water slides I posted earlier. To preempt these warnings, split each level of the spiral at some arbitrary point and assign it a unique layer=*
value (or level=*
if indoors).
At this point, you can add bridge=*
to any way above ground level. You can also map a surrounding man_made=bridge
multipolygon that represents the overall footprint of the structure.
Now to clean up the geometries. Select each way and square or circle it as well as you can. Then move each way onto the same location without an offset. For better visual results, select each node of the way and drag and drop it onto the corresponding node of the ways below it. While dragging, allow iD to snap the node to the other node, but prevent the nodes from being merged by holding down Alt or ⌥ Option just before you drop the node.