building:part=steps, which accept step:height (defaulted to 0.16m) and step_count (defaulted to height divided by step:height), both from Stairs_modelling
I think using leisure=bleachers along with height and a new tag ‘row_count’ (better name needed) should be quite easy, but the height for a building=grandstand indicate where the roof is, so some other tags are required, like ‘row_count’+‘row_height’ or ‘seated_height’
I agree that treating these as steps would be mapping for the renderer, and I also agree in wanting a solution that allows 3D renderers to properly support this feature.
It’s a bit tricky to find a good solution with the existing, popular tags. A building=grandstand has the problem of being larger than the actual seating area – both in terms of height (as you mentioned) but possibly also in terms of area.
If I had the opportunity to design this tagging from scratch, I would probably end up with a tag that refers specifically to the seating on both bleachers and grandstands. This tag would then be used to map just the section of a grandstand that is actually used for seating. Maybe amenity=stadium_seating, which is currently undocumented but has a few hundred uses, might fit the bill depending on how exactly it is/would be used.
area is not really needed here, I do not see a case where stepped_seating can be a line
However, since stadium_seating already exists, let’s start by using this one