Algemeen Openbaar Vervoer (NL)-topic

Concessie Arnhem-Nijmegen is bijgewerkt voor de dienstregeling 2024 :slight_smile:
Ik heb alleen lijn 21 van Arnhem overgeslagen omdat dat een tijdelijke route is die trolleylijn 1 tijdelijk vervangt tijdens werkzaamheden (waarbij de trolley zelf niet kan rijden bij gebrek aan stroomdraden)

1 Like

Ook de concessie Zaanstreek-Waterland is voor het grootste deel bijgewerkt.
Alleen de nachtlijnen nog controleren.
Dan ga ik verder met de wijzigingen bij U-OV.

1 Like

Ik ga geen concessie nalopen; maar zal in de loop van het jaar wel eens een concessie oppakken en dan een link naar de OSM-kaart opnemen op de wiki van OVinNederland.

Ik vond https://ptna.openstreetmap.de/ - Public Transport Network Analysis.
Lijkt een veelbelovende tool om te kijken of de data op Openstreetmap overeen komt met de open data (GTFS) die er is.
Helaas is het nog niet voor Nederland beschikbaar.

Toen de GTFS analyse werd toegevoegd bood @toniE ook aan om de OSM analyse toe te voegen.
Ik weet niet wat voor info daarvoor nodig is.

There isn’t much reqired. For each transport association PTNA needs:

  • the name and URL of the transport association, = what OSM puts into the ‘network’ tag
  • where to search for route relations of that association, usually an ‘admin_level=6’ area or a list of that
  • where to store the list of existing routes (in reality) as CSV list in the OSM wiki.

As an example, see the links in the 2nd, 3rd and last column in the table for GB

1 Like

I did some more analysis on this issue:

  • “transport association” can be identified as one of the 43 OV-concessies Nederland?
  • “search area” can be one of the provinces
    • or more (Groningen-Drenthe)
    • or smaller (Stadsbus Den Haag)
  • locations in the OSM wiki could start with https://wiki.openstreetmap.org/wiki/NL-OV/PTNA/

The table on the NL page of PTNA will be organized by the Country code#ISO 3166-2 of the provinces plus the name of the ‘network’

  • NL-NH-aaa
  • NL-UT-bbb
  • NL-ZH-zzz

where ‘aaa’, ‘bbb’ and ‘zzz’ are the names of the concessies (OSM: ‘network’) in long or short form.

1 Like

Hi ToniE,

I am not completely sure about your implementation.
For “transport association”, the concession (those 49 seem right) seems to be the most logical unit. However, the name “transport association” is a bit confusing, as there are transport associations giving out multiple concessions (e.g. the Vervoersregio Amsterdam (VRA) giving out the concessions Zaanstreek-Waterland, Stadsvervoer Amsterdam and Amstelland Meerlanden) and is a governemental body controlled by the municipalities, while most concessions are handed out by the provinces.

Also, there are currently 9 public transport companies active in the Netherlands: NS (Nederlandse Spoorwegen) for the majority of the rail transport; GVB, HTM and RET for bus, tram, metro in Rotterdam, The Hague and Rotterdam respectively, and Transdev, Qbuzz, Arriva, Keolis and EBS for bus and local rail outside of the three big city centres. They sometimes operate under their own name, sometimes under an older business name (Connexxion for Transdev, Syntus for Keolis), a brand name of their own (like M.NET for EBS in ZaWa) or a brand name of the operator (BraVo for the bus transport in Brabant, split into two concessions run by Arriva and Transdev). A few lines are run from two concessions and by two operators (e.g. line 295 Rotterdam-Utrecht ran under two concessions and by two operators) and line 300 Amsterdam-Haarlem which is one line but technically has part of it belonging to concession AML and the other part to concession H/IJ, although it is fully run as part of the AML concession. Then there’s the “formula’s” like R·NET, which is a “fast bus” brand owned by a concortium of PTA’s and is rand by all metro lines, some fast tram and bus lines of 13 different concessions, but also “buutbus” which is an uncopyrighted formula for local bus services ran by volunteers.

“Search area”: a province is usually a good base, but a concession might span only a part of a province, and there are now two (bus) concessions that span multiple provinces (GD for Groningen/Drente and IJssel-Vecht for the provinces Flevoland, Gelderland and Overijssel) Most of the rail concessions will span multiple provinces and Hoofdrailnet will span all of the Netherlands.
Of course, the province-based concessions will have lines that extend outside of their area, but I think all lines will have at least part in their “home” province - but there might be short trips that run entirely outside the “home” province.

Also, the rail concession Regionaal Spoorvervoer Fryslan en Groningen is partially run by a German transport authority. See (this)[Concessietabel - OV in Nederland Wiki] page for an overview of concessions.

Hi, sorry for the confusion.

I tried to align real-world wording with OSM-terms and failed completely.

PTNA, as the name says ‘network’, arranges analysis configurations around ‘network’ values in OSM - and that’s the main point. And PTNA does not care about ‘operator’ values. That said, PTNA does not attempt to map the OSM term ‘network’ to a real-world 'transport association" or “transport authority” or “department of transport” or “concession” or … there is no need to do that.

What I found were some ‘network’ values which are identical to the name of a province (e.g. “Utrecht”) and that confused me.

I can configure various analysis files based on ‘network’ values (can be multiple or a single one) you want see in a particular file.

For the “search area”: as usual, “small is beautiful”. Each route relation will be found which has at least one node (lat/lon) in that area and the node is either a platform or stop_position or a node of any other member of the relation. Sister/brother route relations of the same route_master will be found as well, even if they are completely outside the area.

For the (all) trains, we can have a single, separate analysis (as with DE-Bahnverkehr) where the search area will span the Netherlands, ignoring buses, trams, and so on.

Overall, the table Huidige openbaarvervoerconcessies in Nederland is useful regarding the 1st and 2nd column.

1 Like

Good work!

Utrecht is complicated, it has only two concessions: Region Utrecht (the former metropolitan city region) and Provincie Utrecht (outside that). Because the shape of the Province resembles a butterfly and the “region” stretches the narrow part north-south, the “province” consists of roughly the eastern and westernmost third of the Province; There are only two places where bus lines from the east and west meet.
“Haaglanden Streek” is a similar beast, split apart by the The Hague city concession.

Is there any work we can do for you now or do you have enough information? Maybe start with a test concession?

Thanks for the offer helping me.
Yes,

  • some of the names of concessions / ‘network’ values are quite long. Having abbreviations would help a lot in the Overview Table’s 1st column. Also: the 1st column must include only a limited set of ASCII characters 0-9A-Za-z_.-

  • for the final shape of search areas: no need to decide now, we can start small and enlarges if some relations were not found.

  • I’m also thinking about skipping the short names of provinces in the name (NL-ZH-xxx thus can become NL-xxx) - there are some concessions which span more than one province. But this would have some other internal implications caused by the current (ugly) code (xxx must not include ‘’-’ then)

  • let’s start with a single test as you suggest. I need the values for ‘nnn’, ‘xxx’, ‘yyy’, …

    • the ‘network’ value(s) ‘nnn’ (, ‘mmm’, …) being considered in that analysis
    • NL-xxx
    • the URL for ‘xxx’
    • the search area “Province yyy”

What are the precise requirements for the search area?
I suspect that the concession borders will line up with municipality borders (admin_level=7).
The worst case seems to be about 30 municipalities per concession.

For Groningen-Drenthe, Zeeland and Frisia we can use the province borders (admin_level=3)
Limburg almost lines up, except Mook en Middelaar is part of Arnhem-Nijmegen.
Would it be a problem if an area is larger than needed?

For naming:
GD is a used abbreviation for Groningen-Drenthe (see URL qbuzz.nl/gd)
So if you want two-level codes, you could do NL-GD-GroningenDrenthe
Then you could also do NL-YV-IJsselVecht, though it is not a used abbreviation.
(note: ij is a vowel sound in Dutch. In some cases ij is considered a single letter that may or may not be the same as y. NL-IJV-IJsselVecht would be preffered but is not ASCII.)

I created https://wiki.openstreetmap.org/wiki/NL-OV/PTNA
I used the NL-pp-ccc-format, where
pp=province (even if the province is not the concession giver) or multiple provinces separated by a lower dash if it’s a shared concession like GR_DR for Groningen-Drente
ccc=a self-made abbreviation for the concession (some of them are frequently used, but I’m not aware of all concessions having an abbreviation).

In the table is a column linking to the current concession relation in OSM.
There are four “special” concessions:

  • NL-HRN: the main rail concession, no province
  • NL-FL-ASL: this concession is for a to-be-opened airport, it has no lines at the moment
  • NL-NH-SHL: This concession is the internal transport of Schiphol Airport, both on public grounds and on the “airside”. It is not a public transport concession like others.
  • NL-GR_FR-RSFG: This concession is managed by three bodies, two Dutch provinces and a German body.

Search area can be derived from the province codes.

1 Like

Thanks for that, very helpful and it will speed-up the task. Although, from sheer amount it will take a while to complete that.

That’s fine, my interpretation of ‘pp’ is: in which region does this all happen. GR_DR is OK, in similar cases like BE (Berlin) and BB (Brandenburg, surrounding Berlin) I used “BE” only: that’s where the ‘network’ company has its headquarters. I leave it up to you.

I’ll start with two of them

  • NL-HRN as the global, nation-wide analysis
  • NL-GE-AN as this shows symbols of three different vehicle types

Once they’re ready, you can decide whether you want to use the common set of options. Here are the standard analysis options of PTNA with a short description.

For the options:

  • allow-coach: In the Netherlands i’d say that “coach” routes translates to long distance operators like
    flixbus. Some of them are mapped, but afaik none included within these concessions
  • check-bus-stop: We don’t have concensus on that within the Dutch community. I personally don’t add highway=bus_stop to new routes, I use public_transport=platform instead, and use a way for that if it’s a longer, raised platform (example), like the majority of Dutch bus platforms. But as this doesn’t render in OSM-carto, some people prefer to keep highway=bus_stop as a separate node.
  • check-name/name-relaxed: I would like to include this. Btw, I’ve always used the “→” unicode arrow instead of “=>”. I don’t understand what the difference between “normal” and “relaxed” mode is.
  • check-platform: please include this
  • check-roundabouts: many roundabouts are used completely in the Netherlands, so please disable this
  • check-route-ref: this is hardly ever used on stops. The “ref” tag is usually used to designate the platform letter, so please don’t use this.
  • check-way-type: In the Netherlands we’ve used a lot of highway=busway. Does that match?

Other options I would keep as you have in the linked IOW.

Does the PTNA check if the ref= of a public_transport=platform match the designated platform letter/number? I beleive for bus, there are a lot of platforms where the ref is not set. In the Netherlands for trains, we have “sectioned platforms” where a platform can be split, i.e. 2a/2b, but some longer trains stop at platform “2” which is 2a and 2b combined.

p.s. your last link is to your localhost, but I assume you mean this.

For NL-GE-AN: I highly doubt whether bus and trolleybus are used as separate vehicle types. Maybe it’s better to use NL-NH-ASD as that has bus, tram and metro in one concession, and is geographically a quite small area. And add NL-NH-NZKV to it, which is technically a separate concession, but is generally seen as the same (it has the same operator GVB). With those three concessions you have covered all modes.

Agreed, will not set that.

Agred, will not set that.

Usually, we set --check-name-relaxed. The strict check requires that ‘from’ and ‘to’ (and ‘via’) are exact parts of ‘name’. The more relaxed check uses sub-strings like ‘from’ = 'München Hauptbahnhof" and ‘name’ = ‘ICE 123: München => Berlin’. “→” shouldn’t be a problem though.

same here, a mix can be found.

… and not necessary if all vehicles which stop here are represented by route relations and have this stop as member

yes

No

Oops, thanks for pointing.

No problem.

BTW: “size of search area” → “small is beautiful” is really true at the moment. PTNA suffers here with FR-IDF-*, a large area. Overpass query only once for ~ 50 analysis (re-use of data if not older than 1.5 h). But analysis is started ~ 50 times for the stored data and that currently takes 5 times more time than before per analysis. Some analyses focus on 10 buses in a small sub-area of IDF, so why should PTNA read the 210MB instead of smaller search area of 1.5 MB? I don’t have local knowledge and can’t judge on the best location and best size. Let’s see whether this problem persists.

1 Like

Yeah, seems to be caused by 80% server load, did not check the disk load avg. though.
I’ll wait until tomorrow. But “small is beautiful” still be a target.

To keep NL-NH-ASD small, you could cover it using the following municipalities: Amsterdam, Diemen and Ouder-Amstel.
Together they are 259 km² instead of 4091,93 km² for North-Holland
image

1 Like

Just Amsterdam is enough. All lines that pass trough Diemen or Ouder-Amstel also pass through Amsterdam.

The first three are available, kindly see PTNA: news for Public Transport Network Analysis - #103 by ToniE

I’ve configured and added OSM wiki pages for the corresponding CSV lists. PTNA takes them as input as a list of what is expected (exists in reality). Kindly modify the lists to match your needs