I am still struggling to map the local bus routes where I live. It is difficult to reconcile reality with what people expect and with the OSM guidelines. The schema with which I have come up goes something like this:
map each variant of a bus route (route letter/number, direction, reverse-runs, self-crossings, short-runnings, telescoping, spoon routes, intermediate terminuses, ecs movements, letter/number ambiguity, same vehicles changing number) as a separate relation, as the guidelines say:
take, as my starting point, the block in most bus timetables where it says “.. and then at these minutes past each hour, until…”. Tag such routes with bobby444:direction=E, W, or whatever bobby444:variant=1, 2, etc
For any variations on these, outside this block, add higher variant numbers, with higher numbers corresponding to something like a ‘routing metric’, with higher numbers corresponding to less frequent, less likely, less useful, less regular variants. The variant numbers must obviously be unique, but I haven’t decided whether they should be contiguous or not.
For minor variations (the test for minor being ‘can I realistically walk from any point on this route to a suitable point on the parent route), the variants get a decimal number. Such variants might be not serving a shopping center after shopping hours, or not going into a housing estate at times when it would cause congestion. A variant can either ‘add’ or ‘take away’ ways and/or stops from a parent route.
The idea is that any simplistic route renderer will just take the routes as they are, and just overlay them so that they end up looking like a huge undifferentiated web (as now), but a more complex renderer will be able to ‘spot the difference’ and decide how to present a less popular route (dotted line, omit it altogether, show it all the time, add textual annotations, allow the user to filter it in/out based on day/time)
The namespace bobby444 won’t be suitable for long term use.
Discussion
Comment from DevonshireBoy42 on 4 May 2018 at 11:35
What do people expect? Do you have a wiki page for describing your schema? and what some of those variant terms mean?
How does it compare to the one of the existing transport schemas, and what does it offer in addition?
Why is the meta data index
bobby444:variantrequired at all? When routes are added or removed without updating the index you will lose contiguity.:direction and the like will distinguish the routes. Even if there wasn’t any to make them unique. Identically tagged routes with differing members will be self evidently variations of the route. Better would to be explicit in making a relation of relations, then the relation itself can handle the issue of numbering/ordering
Comment from Bobby444 on 4 May 2018 at 14:27
@DevonshireBoy42 You’re right, of course; adding these extra tags doesn’t actually help the eventual user, because all the variant info could really be determined spatially. It’s all a work in progress for the time being until I manage to come up with a saner idea.
All the existing transport mapping guides and stuff are all about mapping the area and position of bus stops and the relationship to the point on the road where the bus actually stops. A few people have raised the issue of the weirdness of bus routes but nothing was ever forthcoming.
Basically, what I’m trying to achieve is for someone to be able to put in a bounding box and get the bus services in that area, correctly presented with attention paid to occasional services, time of day, approx frequency, route sharing, and so on, but other people have said that this sort of thing is best left to the live data provided by the companies themselves.
Anyway, my schema will probably come to nothing. For the time being, it’s just a convenience for me, to hold things together until a definite proposal comes along, whereupon I’ll adopt that.
Comment from DevonshireBoy42 on 4 May 2018 at 14:37
I’m certain some of the tags like direction would be very useful to ensure the timetable and spatial data can properly reference one another
for referencing the variant unless the timetable refers to variant 1, 2, 3 we probably want to avoid arbitrary values? (there seems to be some exceptions to references to external sources, perhaps we could use the variant id from the timetable data?) but somehow reference all route relationships as part of a single route.
The other issue is how do you mark the main varient
Comment from DevonshireBoy42 on 4 May 2018 at 14:37
keep up the good work and let me know what you settle on!