The seemingly duplicate data on crossing is because there are different "parts" of the crossing, intended for different users.
There is the path across the road, usually from one sidewalk to the opposite, which is meant for pedestrians, and there is the node where this path touches the road, which is meant for car drivers.
Yes, the system could be improved by grouping these somehow, maybe using relations (https://wiki.openstreetmap.org/wiki/Relation ), but that would add complexity to any navigation or rendering application using OSM data that wants to process information about crossings.
There is the path across the road, usually from one sidewalk to the opposite, which is meant for pedestrians, and there is the node where this path touches the road, which is meant for car drivers.
Yes, the system could be improved by grouping these somehow, maybe using relations (https://wiki.openstreetmap.org/wiki/Relation ), but that would add complexity to any navigation or rendering application using OSM data that wants to process information about crossings.