Schema für ÖPNV Export aus Datenbank

Hallo,

für ein Projekt brauche ich die Fahrpläne der öffentlichen Verkehrsmittel, bzw. die Linien mit deren Haltestellen von U-Bahn, S-Bahn, Tram und Bus von München.

Wie ist denn allgemein das Schema um an die Daten zu kommen?

Ich habe mir mit osm2pgsql eine Datenbank von Oberbayern erstellt, mit folgendem Befehl:

osm2pgsql -s C:\\Users\\***\\Downloads\\map\\oberbayern-latest.osm.bz2 -d osmMunich -U postgres -H localhost -P 5432 -S C:\\Users\\***\\Downloads\\Programme\\Cygwin\\packages\\osm2pgsql\\default.style --hstore

Nun mal ein Beispiel wie ich herangegangen bin mit der U-Bahn:
Erst mal habe ich mir die Master Relations herausgesucht:

SELECT way_off, rel_off, parts, members, tags FROM planet_osm_rels WHERE 'route_master' = ANY(tags) AND 'subway' = ANY(tags)

Danach habe ich davon eine der Relation genommen:

SELECT * FROM planet_osm_rels WHERE id = 3328723

Nun über die members habe ich alle Nodes genommen, welche danach einen stop haben

SELECT * FROM planet_osm_nodes WHERE id = 248796128

Nun gibt es das Problem, das nicht alle Nodes mit Namen in den tags versehen sind.

Dann habe ich mir gedacht, dass ich mal in den osm_point danach suche:

SELECT * FROM planet_osm_point WHERE osm_id = 248796128

Doch da gibt es auch meistens keinen Namen.

Wie muss ich denn vorgehen, um von einer Linie alle Haltestellen-Namen zu bekommen?

Nachschauen, in welcher stop_area der “stop” ist.

Die Relation der U4: http://www.openstreetmap.org/relation/3328723
Einer der Stops darin: http://www.openstreetmap.org/node/2517730912
Die stop_area-Relation, in der dieser Knoten steckt: http://www.openstreetmap.org/relation/2117137
Diese Stop-Area hat einen Namen.

Manchmal existiert völlig unabhängig von diesen Relationen noch ein Bahnhof: http://www.openstreetmap.org/node/2660347912

Grüße, Max

Edit: Link für den Node verwechselt

Danke für eure schnelle Hilfe.
Das hat sehr gut geklappt!

Nun habe ich noch ein kleines Problem…
Z.B die Node n2535330538 hat keinen Namen und keine stop_area-Relation: http://www.openstreetmap.org/node/2535330538
Die Station heißt eig. Hauptbahnhof.
Was mache ich da in diesem Fall?

Bemerken, dass die OSM-Daten nicht immer so sind wie sie sein sollten (und es optimalerweise verbessern) :wink:

Die stop_area hängt doch in der Relation “Hauptbahnhof (Tief) (1952382)” - oder hast du die gerade eingefügt? :slight_smile:

Hat er :wink:

Ja habe ich :wink:

Nun habe ich noch ein Problem…
Wie kann ich S-Bahnen von normalen Zugverkehr trennen?
Früher war doch der Tag “light_rail” in Gebrauch (in München), aber den kann ich nicht mehr finden.

Oh nein, gleich geht’s wieder los [Angst hab]. Ich würde es über Relationen versuchen.

Habe auch gerade die Diskussion über light_rail gelesen :smiley:

Wie meinst du über die Relationen?
Das ich die Namen überprüfe, ob dort “S-Bahn” beinhaltet ist?

In München kommt man mit Relationen “route=train” und “network=MVV” oft zum Ziel (1796424 z.B.). Das blöde ist, dass das nicht in andere Gegenden übertragbar ist und auch in München nicht 100%ig treffsicher.

Ich verteile damit hier die S- und U-Bahnbommel, aber ich glaube, alle hatte ich noch nie richtig. Irgendwann hab ich aufgegeben und beobachte seitdem nur noch als Zuschauer das Auf- und Abtauchen der drei Arten Bahnhof :wink:

Wie wär’s mit ref:/S\s?\d/? Funktioniert zwar auch “nur” in Deutschland, aber anderswo heisst es ja auch nicht S-Bahn. Eine der bestehenden PT-Karten sucht gar nur nach ref:/\AS/ und erwischt damit auch Stadtexpresse.

Danke!
Das mit ref:/\AS/ hat einwandfrei funktioniert. :smiley: