GTFS-Issues icon indicating copy to clipboard operation
GTFS-Issues copied to clipboard

DELFI: Duplizierte stops.txt Einträge

Open hannsadrian opened this issue 7 months ago • 3 comments

Beschreibe den Fehler Im Delfi GTFS Datensatz kommt es häufig (bspw. in Berlin, Cottbus und Dresden; nicht regional begrenzt) zu doppelten stop Einträgen. Dabei gleichen sich die Einträge in allen Feldern, außer ihrer id und der Angabe eines Parents. Jeweils der Eintrag ohne parent hat verknüpfte stop_times. Der Eintrag mit der parent_staton hat keinerlei stop_times.

Auszug aus stops.txt

"stop_id","stop_code","stop_name","stop_desc","stop_lat","stop_lon","location_type","parent_station","wheelchair_boarding","platform_code","level_id"

"de:14612:16:4:99","","Dresden Bahnhof Neustadt","Bayrischer Hof","51.064545000000","13.740101000000",0,,0,"99","2"
"de:14612:16:2:11","","Dresden Bahnhof Neustadt","Vorplatz Busabf","51.065387000000","13.741825000000",0,,0,"11","2"
"de:14612:16:6:92","","Dresden Bahnhof Neustadt","Zentralhaltest.","51.064822000000","13.741295000000",0,,0,"92","2"
"de:14612:16:2:96","","Dresden Bahnhof Neustadt","Vorplatz Busabf","51.065420000000","13.742230000000",0,,0,"96","2"
"de:14612:16:6:91","","Dresden Bahnhof Neustadt","Zentralhaltest.","51.064585000000","13.742310000000",0,,0,"91","2"
"de:14612:16:6:1","", "Dresden Bahnhof Neustadt","Zentralhaltest.","51.064698000000","13.741619000000",0,,0,"1","2"
"de:14612:16:6:2","", "Dresden Bahnhof Neustadt","Zentralhaltest.","51.064777000000","13.741098000000",0,,0,"2","2"

"000010001607","",    "Dresden Bahnhof Neustadt","Bayrischer Hof","51.064545000000","13.740101000000",2,"de:14612:16",0,"99","2"
"000010001603","",    "Dresden Bahnhof Neustadt","Vorplatz Busabf","51.065387000000","13.741825000000",2,"de:14612:16",0,"11","2"
"000010001612","",    "Dresden Bahnhof Neustadt","Zentralhaltest.","51.064822000000","13.741295000000",2,"de:14612:16",0,"92","2"
"000010001604","",    "Dresden Bahnhof Neustadt","Vorplatz Busabf","51.065420000000","13.742230000000",2,"de:14612:16",0,"96","2"
"000010001611","",    "Dresden Bahnhof Neustadt","Zentralhaltest.","51.064585000000","13.742310000000",2,"de:14612:16",0,"91","2"
"000010001609","",    "Dresden Bahnhof Neustadt","Zentralhaltest.","51.064698000000","13.741619000000",2,"de:14612:16",0,"1","2"
"000010001610","",    "Dresden Bahnhof Neustadt","Zentralhaltest.","51.064777000000","13.741098000000",2,"de:14612:16",0,"2","2"

Referenz Die duplizierten Einträge sind immer an exakt den selben Koordinaten mit dem selben Namen und dem selben Platform Code und der selben Stop Description gelistet.

Aktualisierungszeitpunkt der GTFS-Daten 26. Mai 2025 (Exportdatum 24.05.2025)

Downloadlink der GTFS-Daten https://www.opendata-oepnv.de/ht/de/organisation/delfi/startseite

hannsadrian avatar May 29 '25 14:05 hannsadrian

Der location_type ist unterschiedlich: 0 im oberen Block (also Stop/Platform), 2 im unteren (also Entrance/Exit). Das passt so aus meiner Sicht; vgl. https://gtfs.org/documentation/schedule/reference/#stopstxt

jeflem avatar May 29 '25 16:05 jeflem

Hm, korrekt wäre m.E.:

  • Einträge mit DHID-stop_id haben eine Referenz auf parent_station de:14612:16
  • Tatsächliche Steige haben location_type 0 und sind in stop_times referenziert
  • Exit/Entrance nodes (üblicherweise enden diese auf 90er Nummern, das kann aber hier anders sein) haben location_type 2.

Eine exakte Doppelung der mit unterschiedlichen location_types halte ich ebenfalls für einen Ausleitungsfehler.

hbruch avatar May 29 '25 16:05 hbruch

Danke für euer Feedback.

Wenn Stop und Entrance/Exit an der selben Position sind, ist die Entrance/Exit Info aus meiner Sicht überflüssig. Die einzig wertvolle Info ist, dass hier die Entrance/Exit Einträge die Referenz auf parent_station haben. Diese Info würde aber mehr bei den tatsächlichen Plattformen nützen.

An allen Plattformen fahren tatsächlich auch Linien ab. Die 90er Nummern werden hier gerne für Busbahnhöfe oder SEV genutzt.

hannsadrian avatar May 29 '25 21:05 hannsadrian

Ich bin nicht ganz sicher, was DELFI mit "routingfähig" meint – vielleicht habe ich falsche Annahmen gehabt. Ich dachte jedenfalls, dass es u.a. bedeutet, dass nur mit den GTFS-"Umstiegsdaten" aus transfers.txt und pathways.txt bereits vollständige Informationen über sinnvolle Umsteigemöglichkeiten vorliegen sollen.

Durch das hier beschriebene Issue ist aber in meinen Augen diese Routingfähgkeit nicht mehr gegeben. Jedenfalls im von mir betrachteten Fall rund um den Bahnhof Bobingen. Man müsste hier wohl zusätzlich noch berücksichtigen, dass Fahrgäste auch zwischen Stops umsteigen können, die geografisch nahe aneinander (bzw. sogar auf der identischen Position) liegen, selbst wenn sie nicht in transfers.txt oder pathyways.txt verbunden sind.

In Bobingen sieht es in stops.txt so aus, dass hier die Busse laut stop_times.txt halten (location_type 0):

"de:09772:7100:31:A","","Bobingen","Bus","48.266608000000","10.837536000000",0,,0,"A","2"
"de:09772:7100:32:B","","Bobingen","Bus","48.266536000000","10.837464000000",0,,0,"B","2"

Hier sind Entrance/Exit-Stops an der gleichen Position, aber mit Parent und eingebunden in ein Pathway-Netz, das auch die Unterführung in Bobingen sowie die Bahnsteige umfasst, an denen die Züge laut stop_times.txt abfahren:

"000010062907","","Bobingen","Bus","48.266608000000","10.837536000000",2,"de:09772:7100",0,"A","2"
"000010062908","","Bobingen","Bus","48.266536000000","10.837464000000",2,"de:09772:7100",0,"B","2"

In transfers.txt sind nur die beiden Stops ohne Parent miteinander (und wohl eher sinnloserweise mit sich selbst) verbunden:

"de:09772:7100:31:A","de:09772:7100:31:A",2,180,,,,
"de:09772:7100:31:A","de:09772:7100:32:B",2,180,,,,
"de:09772:7100:32:B","de:09772:7100:31:A",2,180,,,,
"de:09772:7100:32:B","de:09772:7100:32:B",2,180,,,,

So findet man mit Routing nur anhand der GTFS-Daten – jedenfalls wenn ich nichts übersehen habe – keine Verbindung zwischen dem Bus, der direkt vor dem Bahnhof hält, und den Zügen, die im Bahnhof abfahren. Der Bahnhof ist zwar schön mit Pathways ausgestattet (nicht ganz korrekt, der Bahnsteig für Gleis 4 ist nicht über die Unterführung erreichbar, sondern man muss durch eine Schranke gesichert übers Gleis gehen), aber man kommt eben weder per transfers.txt noch per pathways.txt von den Gleisen bis zu dem Stop, an dem tatsächlich die Busse abfahren. Nur bis zu einem Stop, der als Entrance/Exit an der exakt identischen Geoposition ist und als "Bus" beschrieben wird, aber eben keinen Verkehr aufweist.

Für die "bessere Routingfähigkeit" wäre es natürlich schön, wenn die Verbindung irgendwie hergestellt würde, also z.B. die Bus-Stops mit location_type 0 über pathways.txt oder transfers.txt mit den location_type 2-Stops und somit dem Bahnhofs-Pathways-Netzwerk verbunden wären, oder eben direkt nur ein Stop je Fahrtrichtung für die Bushaltestellen existieren würde, der dann mit Bus und dem Pathway-Netzwerk verbunden wäre. Ehrlich gesagt scheint mir die Bushaltestelle auch kein Ein- oder Ausgang zu sein.

w-flo avatar Nov 28 '25 07:11 w-flo