The Subway Validator evolves

Posted by Zverik on 19 March 2018 in English (English)

First, thank you all for improving the mapping of subway networks all around the world! In just half a year, we made more than 150 networks routable, of 180 total. That is very impressive. Today, OpenStreetMap has more data on subways than any other source, open or proprietary.

Last week, I have made a few improvements to the validator. The major one is a change to how stations are counted. We had an issue of transfer stations: for some cities they were counted once, for other — twice, depending on how they are mapped. This simplified calculating a projected total number of stations (just copy it from wikipedia), but affected mapping.

Now, thanks to disc12, it sums up numbers of stations for each line. This is more predictable and allows for different interchange mapping styles. In the spreadsheet, counts of stations have been mostly updated in form of a formula: =line1+line2+...+lineN. You can clearly see how many stations it expects for each subway line. If you find an error there, add a comment and I'll update the number.

Having trouble with missing or extra stations? Click on "Y" near the city name, and you'll get a YAML file with all stations, transfers and lines. What's new is a number of stations for each line (calculated as a number of unique stations for all its itineraries), along with a list of stations. Comparing it to wikipedia is much easier.

There are some improvements planned still. For example, handling of stations under construction: you cannot add these to routes at the moment, or you'll get an error. And there is a "nowhere near the tracks" error that is hard to track — I really should do something with it. And the preprocessor calls for a GTFS output.

Thanks for mapping, now let's finish the last cities and then monitor the world for new subway and light rail stations. If you are an app developer, please consider using the validator output for your app. Contact me if you have any questions.

Comment from -karlos- on 20 March 2018 at 07:27

If you like to see the subwas OSM data visualised in 3D, try my experiment:

We culd add tag height to the nodes and make it even more realistic. If there are real time data, even trains could be visualised

Comment from alan_gr on 20 March 2018 at 07:52

Should Valencia be included? Metrovalencia is one of the larger networks in Spain;

Comment from Zverik on 20 March 2018 at 11:19

I have added the Valencia system, will be up in 3-4 hours.

Comment from ToniE on 20 March 2018 at 12:48

Hi Zverik,

in Europe -> Germany -> Munich S-Bahn I can see many erros like

stop node 737174134 is not connected to a station in route (relation 1844089, "S-Bahn S20: Pasing => Höllriegelskreuth")

What does this actually mean and how can I fix that, i.e. "connect a stop node/platform to a station?"

"public_transport=station" can be Node or closed Way (area) but not simple Way or Relation.

Any suggestion?

Thanks Toni

Comment from Zverik on 20 March 2018 at 12:53

Hi Toni,

Thanks for looking into fixing the Munich S-Bahn. The error means that the node 737174134 is a part of a route relation, a stop in this case. For it, the validator needs to find a corresponding subway station object. It does so via a stop_area relation that the node should be in. It is — but the relation does not include the station node. Adding it to the stop_area relation will solve the issue.

Comment from ToniE on 20 March 2018 at 13:04

Thanks Zverik,

so it is more an indirect connection through a common stop_area relation. Well, not too complicated though, I will keep an eye on it.

Comment from ToniE on 20 March 2018 at 13:29

Sorry for nagging ...

  • Angle between stops around "Grafing Bahnhof" is too narrow, 0 degrees (relation 1794891, "S-Bahn S4: Geltendorf => Ebersberg")

    I don't know what this means and how this should be

  • Multiple platforms for a station "München Hauptbahnhof (tief)" (w43338429) in a route relation (relation 1782541, "S-Bahn S2: Petershausen => Erding")

    This is OK, it is called the "spanisch solution": single track between two platforms

    leave the train on the right
    enter the train on the left
  • Route does not have a return direction (relation 1843976, "S-Bahn S8: Herrsching => Flughafen München") and Route does not have a return direction (relation 1843975, "S-Bahn S8: Flughafen München => Herrsching")

    hmm, first is the return direction of the second and vice versa and they are members of a common route_master

Comment from Zverik on 20 March 2018 at 13:59

  1. Angle around 0° means the order of the stops is incorrect. Like, instead of "A→B→C→D→E" in the route relation there is "A→B→D→C→E".
  2. It's okay, it is only a warning. I recommend using "platform_entry_only" and "platform_exit_only" roles.
  3. Please check the first and last station of these route relations. As I can see from the YAML dump, they both have "Westkreuz" as the last station. The validator expects for every "A→B" route to find a corresponding "B→A".

Comment from ToniE on 20 March 2018 at 14:17

Thanks again Ilya,

1 and 3 are also not too complicated, badly sorted relations.

2 is not so easy and does not fit everywhere: "platform_entry_only" has a lift whereas "platform_exit_only" does not have a lift (at Munich Marienplatz for instance) - difficult for wheelchair users and others who can't use stairs or conveying steps.

Thanks, I'll fix asap. Toni

Login to leave a comment