New tool for analysing OSM public transport stop data

Hi community,

I want to announce Public Transport Stop Analysis (PTSA), an interactive map visualizing PT stop data from the OSM data base. Some features:

  • automatic grouping of objects (stop positions, poles, platforms) to stops based on distances and tags,
  • different coloring schemes for stop properties
  • comments and warnings on tagging quality for each stop

The main pupose is to find tagging mistakes and inconsitencies in OSM data.

The project is freely accessible and the code is on GitHub. Also have a look at PTSA’s help page to better understand what you see and what to do with the information provided.

Future plans are:

  • having links to routes in PTNA for each stop
  • include more information (accessibility tags,…)
  • provide all the generated data for download

Feedback here in the forum or in the project’s GitHub issues. I’m especially interested in stops you think PTSA does not show correctly although tagging seems to be okay. Thank you!

Finally, some screenshots for those who do not want to click the link :wink:

Jens

14 Likes

Very nice tool! I’ll admit I was a bit confused by the coloring at first. I didn’t notice that you have to click the circles on the side, since the boxes were all checked. Maybe you can uncheck/gray out the boxes for unselected coloring options? But this is a minor quibble :slight_smile:

Some feedback you were interested in: I think this stop is tagged correctly: Node: ‪LAX/Metro Transit Center‬ (‪10088767531‬) | OpenStreetMap. It’s an under-construction light rail stop tagged construction:public_transport=station + construction:railway=station + station=light_rail + light_rail=yes (ignore the opening date, it’s been delayed past this year). The tool flags it as ‘dubious’ with the warning “node somehow related to public transport, but how?”. Maybe explicit handling for construction:* prefixes would be useful? Or maybe this object is incorrectly tagged.

I had a quick look in my local area and it looks good, it only highlighted a small number of stops, but they were genuine mistakes that I was able to fix (e.g. a few stops tagged as subway whereas the rest of the network is tagged as light_rail).

Yes I found this too. I think the fact that the group that is “switched on” initially is not the top group also makes this harder to figure out. It’s also not obvious at first that “dubious objects” needs to be switched on separately - this turned out to be one of the most useful checks.

Even more minor: “pole” is spelled “plole” in a few places!

Maybe you can uncheck/gray out the boxes for unselected coloring options?

That’s a really good idea. Working on such projects over time you become blind for such obvious improvements. Opened an issue about this. So I don’t forget this next time I work on the code.

I think this stop is tagged correctly

I think you are right. It’s not totally clear to me how to handle stops under construction since things under construction are tagged differently by different mappers. Thus, I decided to ignore them in PTSA. But in this concrete case the light_rail=yes gives PTSA a hint, that this node is somehow related to public transport, while ignoring the construction:... tags. Opened an issue here, too, and will fix this (hopefully) soon.

Thank you very much for you valueable feedback!

Initially “on” was the default. But then the map looked quite crowded by those pink dots and I decided that “off” is a more pleasant default. Maybe I could move the dubious objects switch to the sidebar’s top. Will think about a better/more obvious solution.

That’s not a typo. I made up the word “plole” to refer to poles or platforms or both, that is, to the place where passengers are waiting. The Help page has some explanation.

Many thanks for your feedback!

Stops under construction won’t show up as dubious objects anymore after the server has updated all data (will take about 20 hours from now).

Proposed GUI improvements are online now.

2 Likes

Very nice tool @jefle !

Do you have any idea why this pole/stop position tuple is not merged with the platform/stop position tuple to a group of three?
https://gauss.whz.de/ptsa/#19/48.52955/9.30665

Yes, the pole is too far away from the platform. PTSA allows for a distance of up to 2 meters between platform ways and poles (1 meter in case of platform areas). Both the pole and the platform mark the waiting area. Thus, the pole should be on the platform (up to some tolerance).

Checked the location on street level images: Up to now I thought that (in Germany) the H-sign has to be close to the street. But here it is quite far away from the street. Seems to mark the shelter instead of the bus’ stop position.

Allowing for larger distances between platforms and poles in PTSA results in problems with several parallel platforms/poles at bus stations, for instance. For the moment we have to live with this non-matching in PTSA. Maybe one could map the (quite large) platform as area? Then the pole will be close to or inside the area.

If there pop up more such (for me) cumbersome stops with pole far away from the street, I’ve to think about how to deal with them in PTSA…

If you find more unclear situations please let me know. That’s very helpful for further development!

Jens

I see this, but cannot find what is wrong with the node:

Dubious object

node 3672500491
warnings:

  • node is tagged as stop position for bus, but is not on any relevant track

The same message on a pink dot helped me spot a stale highway=bus_stop that has remained after a route was changed, maybe only though, because it was also tagged pt=stop_position? PT mappers here only in PTV2. Great that your tool honours bus stops!

That’s really interesting! Looks like a situation that is handled incorrectly by PTSA. PTSA considers highway=pedestrian as a suitable track type for bus only if there’s an additional psv=yes. At your location there’s no psv=yes, but a motor_vehicle=yes @ (Mo-Fr 0:00-16:00, Sa 0:00-24:00, Su 0:00-24:00) instead. PTSA does not care about this tag at the moment. That’s definitely something I should include into the processing. Opened an issue to keep this in mind for the next dev session.

By the way, in Google Street View I cannot see any time restrictions. Looks like cars are allowed all the day (and night). But my knowledge of Austrian traffic signs is very limited.

I guess I have to revert some changes there :wink: This street in fact is a living street I have been there three months ago. The centre was retagged meanwhile. I think wrongly, the outer sections still living street. I remember having seen the sign in this place. May have to wait for re-survey though.

Anyways, adding psv=yes no big deal, after all, it is correct. The bus goes there, so much for certain.

UPDATE: Of course, reality is a bit more complicated. In summer, there is a temporal pedestrian area in the afternoon, while there is a living street all year around. There is more than that, but that is the main point.

Nice tool Jens!

This pole is 0.56m from the platform, but is not recognized. The pole and platform haven’t been modified recently.
Most warnings in The Netherlands are related to unrecognized poles.

Gertjan

Incorrect tagging might be an issue here (at least motor_vehicle should be motor_vehicle:conditional here by wiki). Either way, PTSA should pay attention to motor_vehicle key in pedestrian zones.

Oh, that’s a difficult one. There are three (!) platform objects:

In PTSA each pole may belong to at most one platform object. From the details page we see that PTSA matches the pole to the long line, which is correct.

I think this platform should we reworked in several aspects:

  • one platform object instead of 3,
  • way 988626111 should have area=yes,
  • if the platform is mapped as area, then make way 988626109 and way 988626110 a footpath inside the platform area, not separate platform objects

Looking at the PTv2 proposal I think the basic assumption there is, that platforms are mapped as one object, although it’s not explicitly stated.

If my opinion ‘only one platform object’ is wrong, I have to think about how to implement such multi-object platforms in PTSA.

Did some research to find more/all multi-object platforms. Turns out that they are used heavily in the Netherlands only and about 80 per cent of them have been created by a single user. Here’s an Overpass query counting all multi-object platforms in an area and the ones created by the specific user.

A few instances exist outside the Netherlands. But all I checked in detail are false positives: a bus platform above a subway platform looks like ‘platform in platform’ without considering the level key.

For the moment I consider multi-object platforms as bad tagging practice. But would be nice to read some comments on this view.

Thanks. I overlooked that, but it explains a lot.

Looking a the history, the original mapper only tagged the area with public_transport=platform. The ways on the platform were tagged with highway=platform. The public_transport=platform tags on the ways were added later, triggered by a maproulette challenge.

I’ll bring this to the attention in the Dutch PT topic. The original mapper of the platforms is active there as well.

For PTSA highway=platform and public_transport=platform are more or less identical. The former is ‘old’ tagging scheme, the latter is PTv2. Removing the addition public_transport=platform wouldn’t solve the issue for PTSA if there still a ways with highway=platform on the platform.

Thanks for opening the discussion in the Dutch community! Could become very interesting.

I recently read that one limitation of PTv2 is that platforms cannot be divided, which means that partially covered platforms cannot be accurately modeled.

No clue if that still holds true as the post is 4 years old.

I think it cannot be changed as it is essential to the concept of PTv2.

Every stop of the vehicle is part of the relation with two parts: first the stop_position and immediately afterwards the platform with the same name. Only if one of them is not mapped, it may be omitted. It has to be included otherwise. If more objects with the same name occur afterwards in the route, they designate a different stop of the vehicle (which occurs rather often in bus lines). So PTv2 (and PTv1) have the property, that you can find all the lines belonging to a stop object by looking up the memberships of that object.
So one stop of the vehicle cannot have more than one stop_position and one platform in the PTv2 route and all stops and platforms must be members of their routes. This excludes the splitting of platforms.
It also excludes adding additional separate objects with PTv1 tags like a highway=bus_stop node on a highway=platform line. All the old tags are completely valid in PTv2. Every railway=platform is a PTv2 platform. Every highway=bus_stop which is not part the way of the vehicle is a PTv2 platform. Other highway=bus_stop are PTv2 stop_positions. None of them needs a public_transport=something to be a completely valid PTv2 object.

As I was not able to convince a majority of the mappers that this was written down in the PTv2 proposal, I’ve given up mapping Public Transport.