bahnhofgraph
Classes:
-
BahnhofElement–Vollständige Bahnhofelementbezeichnung (Typ und Name)
-
BahnhofGraph–Bahnhöfe und ihre Gleishierarchie
-
BahnsteigGraph–Bahnsteige
-
BahnsteigGraphEdge–Klasse der Kantenattribute von BahnsteigGraph und BahnhofGraph
-
BahnsteigGraphNode–Klasse der Knotenattribute von BahnsteigGraph und BahnhofGraph
BahnhofElement
flowchart TD
stskit.model.bahnhofgraph.BahnhofElement[BahnhofElement]
click stskit.model.bahnhofgraph.BahnhofElement href "" "stskit.model.bahnhofgraph.BahnhofElement"
Vollständige Bahnhofelementbezeichnung (Typ und Name)
Bahnhofelemente sind alle benannten Gleise, Bahnsteige, etc., die im Bahnhofgraph als Knoten vorkommen. Dazu gehören also in Erweiterung des üblichen Sprachgebrauchs ausdrücklich auch Anschlussgleise und Haltepunkte.
Eine Bahnhofelementbezeichnung enthält den Typ und den Namen des Elements, die auch als Property im BahnsteigGraphNode vorkommen. Typ und Namen werden verwendet, weil Anschlussgleise und Bahnhofgleise den gleichen Namen tragen können.
Attributes:
-
typ(str) –Bahnhofelementtyp. Stringliteral aus
BAHNHOFELEMENT_TYPEN. -
name(str) –Bahnhofelementname. Name des Elements gemäss Simulator.
Methods:
-
__str__–Benutzerfreundliche Bezeichnung, wird im UI verwendet.
-
from_string–Bahnhofelement aus Stringdarstellung
__str__
from_string
classmethod
from_string(s: str) -> BahnhofElement
Bahnhofelement aus Stringdarstellung
Raises:
-
ValueError–Fehlerhaftes Format oder unbekannter Elementtyp. Überprüft nicht, ob das Bahnhofelement in der Anlage existiert.
Source code in stskit/model/bahnhofgraph.py
BahnhofGraph
flowchart TD
stskit.model.bahnhofgraph.BahnhofGraph[BahnhofGraph]
click stskit.model.bahnhofgraph.BahnhofGraph href "" "stskit.model.bahnhofgraph.BahnhofGraph"
Bahnhöfe und ihre Gleishierarchie
Der Bahnhofgraph stellt die Gleishierarchie der Bahnhöfe dar und ordnet Bahnhöfe, Bahnhofteile, Bahnsteige und Gleise einander zu.
Die Attribute der Knoten haben die Klasse BahnsteigGraphNode, die Kanten BahnsteigGraphEdge.
Der Graph ist gerichtet, die Kanten zeigen von Bahnhöfen zu Gleisen. Die ungerichtete Variante ist der BahnsteigGraph.
Attributes:
-
ziel_gleis(Dict[Union[int, str], BahnhofLabelType]) –Ordnet jedem Gleisnamen und jeder Anschlussnummer das entsprechende Graphlabel zu.
Methods:
-
anschlussgleise–Listet die zu einer Anschlussstelle gehörenden Gleise auf.
-
anschlussstelle–Zu Anschlussgleis zugeordnete Anschlussstelle nachschlagen.
-
anschlussstellen–Listet alle Anschlussstellen auf.
-
bahnhoefe–Listet alle Bahnhöfe auf.
-
bahnhofgleise–Listet die zu einem Bahnhof gehörenden Gleise auf.
-
bahnhofteilgleise–Listet die zu einem Bahnhofteil gehörenden Gleise auf.
-
export_konfiguration–Bahnhofgraph exportieren für Konfigurationsdatei
-
find_gleis_enr–Gleis nach Namen oder Anschlussgleis nach
enrsuchen. -
find_name–Betriebsstelle nach Namen suchen.
-
find_superior–Übergeordnetes Element suchen.
-
gleis_bahnhof–Zu Gleis zugeordneten Bahnhof nachschlagen.
-
gleis_bahnhofteil–Zu Gleis zugeordneten Bahnhofteil nachschlagen.
-
gleis_bahnsteig–Zu Gleis zugeordneten Bahnsteig nachschlagen.
-
gleis_parents–Generates a dictionary of parents for each Gl and Agl node in the graph.
-
hierarchical_index–Erstellt einen hierarchischen Sortierindex von Gleisen.
-
import_anlageninfo–Importiert die Anlageninformation in den Stellwerksknoten.
-
import_bahnsteiggraph–Importiert Gleise und Bahnsteige aus einem Bahnsteiggraphen.
-
import_konfiguration–Konfiguration importieren
-
import_signalgraph–Importiert Anschlussgleise aus einem Signalgraphen.
-
label–Das Label besteht aus Typ und Namen des BahnsteigGraphNode.
-
leere_gruppen_entfernen–Gruppen ohne Elemente aus dem Graphen entfernen.
-
list_by_type–Listet die alle Elemente bestimmter Typen auf.
-
list_children–Listet die untergeordneten Elemente bestimmter Typen auf.
-
list_parents–Übergeordnete Bahnhofelemente zu einem Gleis.
-
list_siblings–Listet die Geschwisterelemente eines Bahnhofelements auf.
-
map_from_other_graph–Bahnhofelement von einem anderen Graphen übersetzen
-
replace_parent–Ersetzt den Elternknoten eines Gleises.
-
root–Label des höchsten Knotens
-
validate–Vollständigkeit des Bahnhofgraphen prüfen.
Source code in stskit/model/bahnhofgraph.py
anschlussgleise
Listet die zu einer Anschlussstelle gehörenden Gleise auf.
Nur für Anschlussgleise.
Parameters:
-
(anststr) –Name der Anschlussstelle.
Returns:
Raises:
-
KeyError–Wenn die Anst nicht gefunden wird.
Source code in stskit/model/bahnhofgraph.py
anschlussstelle
Zu Anschlussgleis zugeordnete Anschlussstelle nachschlagen.
Nur für Anschlussgleise.
Parameters:
-
(gleisstr) –Anschlussgleisname wie im STS.
Returns:
-
str–Name der Anschlussstelle.
Raises:
-
KeyError–Wenn nicht gefunden.
Source code in stskit/model/bahnhofgraph.py
anschlussstellen
Listet alle Anschlussstellen auf.
Returns:
Source code in stskit/model/bahnhofgraph.py
bahnhoefe
Listet alle Bahnhöfe auf.
Returns:
bahnhofgleise
Listet die zu einem Bahnhof gehörenden Gleise auf.
Nur für Bahnhofgleise.
Parameters:
-
(bahnhofstr) –Name des Bahnhofs.
Returns:
Raises:
-
KeyError–Wenn der Bahnhof nicht gefunden wird.
Source code in stskit/model/bahnhofgraph.py
bahnhofteilgleise
bahnhofteilgleise(bahnhofteil: str) -> Iterable[str]
Listet die zu einem Bahnhofteil gehörenden Gleise auf.
Nur für Bahnhofgleise.
Parameters:
-
(bahnhofteilstr) –Name des Bahnhofteils.
Returns:
Raises:
-
KeyError–Wenn der Bahnhofteil nicht gefunden wird.
Source code in stskit/model/bahnhofgraph.py
export_konfiguration
Bahnhofgraph exportieren für Konfigurationsdatei
Returns:
-
Sequence[Dict[str, Union[str, int, float, bool]]]–Liste von Bahnhof-Elementen für das
elemente-Array gemässconfig.schema3.json.
Source code in stskit/model/bahnhofgraph.py
find_gleis_enr
Gleis nach Namen oder Anschlussgleis nach enr suchen.
Der Zielgraph enthält für Anschlussgleise die enr.
Mit dieser Methode kann sie in ein Label des Bahnhofgraphs überführt werden.
Die Gleise sind indiziert in ziel_gleis.
Dieser Dictionary kann alternativ verwendet werden.
Parameters:
Returns:
-
Optional[BahnhofLabelType]–Gleislabel (typ, name) oder None, wenn nicht gefunden
Source code in stskit/model/bahnhofgraph.py
find_name
Betriebsstelle nach Namen suchen.
Wenn der Typ nicht bekannt ist. Sucht zuerst in den Bahnhöfen und Anschlussstellen, dann in der weiteren Hierarchie.
Parameters:
-
(namestr) –Name der Betriebsstelle
Returns:
-
Optional[BahnhofLabelType]–Label (Typ und Name) der Betriebsstelle oder None
Source code in stskit/model/bahnhofgraph.py
find_superior
Übergeordnetes Element suchen.
Parameters:
-
(labelBahnhofLabelType) –Label des Ausgangselements.
-
(typenSet[str]) –Set von Elementtypen, z.B. {'Anst', 'Bf'}.
Returns:
-
BahnhofLabelType–Label des gefundenen Elements.
Raises:
-
KeyError–Wenn nicht gefunden.
Source code in stskit/model/bahnhofgraph.py
gleis_bahnhof
gleis_bahnhofteil
Zu Gleis zugeordneten Bahnhofteil nachschlagen.
Nur für Bahnhofgleise.
Parameters:
-
(gleisstr) –Gleisname wie im STS.
Returns:
-
str–Bahnhofteilname.
Raises:
-
KeyError–Wenn nicht gefunden.
Source code in stskit/model/bahnhofgraph.py
gleis_bahnsteig
gleis_parents
Generates a dictionary of parents for each Gl and Agl node in the graph.
This method traverses the graph in reverse breadth-first search (BFS) to find all parent nodes of each Gl and Agl node. It organizes these parent nodes into a nested dictionary where the keys are the Gl or Agl nodes, and the values are dictionaries mapping child node types to their corresponding child nodes.
Returns:
-
Dict[BahnhofLabelType, Dict[str, BahnhofLabelType]]–A dictionary containing parent nodes for each Gl and Agl node.
Source code in stskit/model/bahnhofgraph.py
hierarchical_index
hierarchical_index(elements: Iterable[BahnhofElement]) -> Dict[BahnhofElement, Tuple[Union[int, str], ...]]
Erstellt einen hierarchischen Sortierindex von Gleisen.
Der Index ist ein Dictionary mit folgenden Eigenschaften:
Die Schlüssel sind Tupel mit den Namen aller Elemente im Pfad vom Root-Element zum jeweiligen Gleis.
Namen, die numerische Elemente enthalten, werden zusätzlich aufgespalten, damit Gleisnummern numerisch sortiert werden. Die Aufspaltung wird vom Gleisschema durchgeführt.
Der Dictionary kann in der sorted-Funktion verwendet werden:
gleise = sorted(result.keys(), key=result.get)
Parameters:
-
(elementsIterable[BahnhofElement]) –Liste von Gleisen (Bahnhofelemente vom Typ Gl oder Agl) Wenn leer oder None, werden alle Gleise und Anschlussgleise inkludiert.
Returns:
Source code in stskit/model/bahnhofgraph.py
import_anlageninfo
import_anlageninfo(anlageninfo: AnlagenInfo)
Importiert die Anlageninformation in den Stellwerksknoten.
Source code in stskit/model/bahnhofgraph.py
import_bahnsteiggraph
import_bahnsteiggraph(bahnsteiggraph: BahnsteigGraph, gleisschema: Gleisschema)
Importiert Gleise und Bahnsteige aus einem Bahnsteiggraphen.
Source code in stskit/model/bahnhofgraph.py
import_konfiguration
Konfiguration importieren
Strategie
- Alle Knoten von bestehendem Graph importieren.
Kanten nicht importieren, sondern Vorfahr im
stamm-Attribut verzeichnen. - Knoten mit Attributen aus Elementen importieren, bestehende überschreiben.
Vorfahr im
stamm-Attribut verzeichnen. In der Anlage nicht vorkommende Gleise nicht übernehmen. - Kanten gem.
stamm-Attribut schichtweise zur Vorfahrebene konstruieren, beginnend mit Gl und Agl. - Kantenlose Knoten entfernen: Alle ohne eingehende Kanten, alle nicht-Gleise ohne ausgehende Kanten. Gl und Agl haben keine ausgehenden Kanten und müssen beibehalten werden.
Source code in stskit/model/bahnhofgraph.py
794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 | |
import_signalgraph
import_signalgraph(signalgraph: SignalGraph, gleisschema: Gleisschema)
Importiert Anschlussgleise aus einem Signalgraphen.
Source code in stskit/model/bahnhofgraph.py
label
staticmethod
leere_gruppen_entfernen
Gruppen ohne Elemente aus dem Graphen entfernen.
Bei der Bearbeitung mittels replace_parent kann es vorkommen, dass leere Gruppen (Bahnhöfe etc.) zurückbleiben. Diese Methode räumt sie auf.
Source code in stskit/model/bahnhofgraph.py
list_by_type
Listet die alle Elemente bestimmter Typen auf.
list_children
Listet die untergeordneten Elemente bestimmter Typen auf.
Die Suchreihenfolge ist Breadth First.
Parameters:
-
(labelBahnhofLabelType) –Label des Ausgangselements.
-
(typenSet[str]) –Set von Elementtypen, z.B. {'Anst', 'Bf'}.
Returns:
-
None–Iterator über gefundene Elemente.
Raises:
-
KeyError–Wenn label nicht gefunden wird.
Source code in stskit/model/bahnhofgraph.py
list_parents
Übergeordnete Bahnhofelemente zu einem Gleis.
Parameters:
-
(labelBahnhofLabelType) –Gleislabel (typ, name).
Returns:
-
None–Generator von übergeordneten Elementen (typ, name) von unten nach oben.
-
None–Das Ausgangselement wird nicht geliefert.
Raises:
-
KeyError–Wenn das Gleis nicht existiert.
Source code in stskit/model/bahnhofgraph.py
list_siblings
list_siblings(label: BahnhofLabelType) -> Generator[BahnhofLabelType, None, None]
Listet die Geschwisterelemente eines Bahnhofelements auf.
Geschwisterelemente haben den gleichen Typ und das gleiche Elternelement. Das Originalelement ist enthalten.
Source code in stskit/model/bahnhofgraph.py
map_from_other_graph
map_from_other_graph(original_element: BahnhofElement, original_graph: BahnhofGraph) -> Optional[BahnhofElement]
Bahnhofelement von einem anderen Graphen übersetzen
Wenn zwei Graphen dieselbe Anlage abbilden, übersetzt diese Methode ein Bahnhofelement des anderen Graphen anhand eines repräsentativen Gleises in ein Bahnhofelement des eigenen Graphen. Beide Graphen müssen dieselben Gleise enthalten.
Parameters:
-
(original_elementBahnhofElement) –BahnhofElement im anderen Graphen.
-
(original_graphBahnhofGraph) –anderer BahnhofGraph, der original_element enthält.
Source code in stskit/model/bahnhofgraph.py
replace_parent
replace_parent(gleis: BahnhofLabelType, new_parent: BahnhofLabelType, new_data: Optional[BahnsteigGraphNode] = None, del_old_parent: bool = False, dry_run: bool = False) -> bool
Ersetzt den Elternknoten eines Gleises.
Dies ist nützlich, wenn ein Gleis von einem anderen Bahnhof übernommen wird.
Der Elternknoten kann ein beliebiger übergeordneter Knoten des Gleises sein.
Der Elternknoten kann existieren oder wird neu erstellt.
Der alte Knoten wird gelöscht, wenn der Parameter del_old_parent auf True gesetzt ist und er keine Kinder mehr hat.
Hinweis
Es können leere Gruppen zurückbleiben. Am Ende der Bearbeitung daher ggf.
leere_gruppen_entfernen aufrufen!
Parameters:
-
(gleisBahnhofLabelType) –Das Gleis, dessen Elternknoten ersetzt werden soll. Kann auch ein Element einer höheren Ebene sein, so lange die Ebene tiefer ist als die von
new_parent. -
(new_parentBahnhofLabelType) –Der neue Elternknoten des Gleises. Gibt den Typ und Namen des neuen Elternknotens an. Der Knoten kann existieren oder wird aus einer Kopie des alten neu erstellt.
-
(new_dataOptional[BahnsteigGraphNode], default:None) –Daten des neuen Elternknotens. Wenn None, werden die alten Daten verwendet.
-
(del_old_parentbool, default:False) –Alten Knoten löschen, wenn er keine Kinder hat. Standardmäßig False.
-
(dry_runbool, default:False) –True = prüfen, ob die Aktion möglich ist, Graph aber nicht verändern. Bei einem Fehler wird ein ValueError gemeldet.
Returns:
-
bool–True, wenn erfolgreich.
Raises:
-
ValueError–Wenn der Stammknoten nicht gefunden wird oder das Gleis bereits zum neuen Stamm gehört.
Source code in stskit/model/bahnhofgraph.py
root
Label des höchsten Knotens
Der höchste Knoten ist das Stellwerk.
Returns:
-
BahnhofLabelType–Label
('Stw', Stellwerkname)
Source code in stskit/model/bahnhofgraph.py
validate
Vollständigkeit des Bahnhofgraphen prüfen.
- Hat jedes Gleis eine zugeordnete Bst?
- Hat jedes Element genau ein Stammelement?
Source code in stskit/model/bahnhofgraph.py
BahnsteigGraph
flowchart TD
stskit.model.bahnhofgraph.BahnsteigGraph[BahnsteigGraph]
click stskit.model.bahnhofgraph.BahnsteigGraph href "" "stskit.model.bahnhofgraph.BahnsteigGraph"
Bahnsteige
Der Bahnsteiggraph enthält alle Bahnsteige aus der Bahnsteigliste der Plugin-Schnittstelle als Knoten. Kanten werden entsprechend der Nachbarrelationen gesetzt. Der Graph ist ungerichtet, da die Nachbarbeziehung als reziprok aufgefasst wird.
Vom Simulator werden nur die Gleisbezeichnungen der untersten Hierarchie sowie ihre Nachbarbeziehungen angegeben. Die Gruppierung in Bahnhofteile, Bahnhöfe und Anschlussstellen wird von der Klasse unterstützt, muss aber vom Besitzer gemacht werden.
Methods:
-
bahnsteige_importieren–Bahnsteiggraph aus Plugindaten erstellen.
bahnsteige_importieren
bahnsteige_importieren(bahnsteige: Iterable[BahnsteigInfo])
Bahnsteiggraph aus Plugindaten erstellen.
Parameters:
-
(bahnsteigeIterable[BahnsteigInfo]) –Iterable von stsobj.BahnsteigInfo vom PluginClient
Source code in stskit/model/bahnhofgraph.py
BahnsteigGraphEdge
flowchart TD
stskit.model.bahnhofgraph.BahnsteigGraphEdge[BahnsteigGraphEdge]
click stskit.model.bahnhofgraph.BahnsteigGraphEdge href "" "stskit.model.bahnhofgraph.BahnsteigGraphEdge"
Klasse der Kantenattribute von BahnsteigGraph und BahnhofGraph
Attributes:
-
typ–Beziehungstyp
Wert Bedeutung Nachbar Nachbarbeziehung gemäss Simulator. Hierarchie Von StsDispo definierte Hierarchiebeziehung. -
distanz–Länge (Anzahl Knoten) des kürzesten Pfades zwischen den Knoten.
BahnsteigGraphNode
flowchart TD
stskit.model.bahnhofgraph.BahnsteigGraphNode[BahnsteigGraphNode]
click stskit.model.bahnhofgraph.BahnsteigGraphNode href "" "stskit.model.bahnhofgraph.BahnsteigGraphNode"
Klasse der Knotenattribute von BahnsteigGraph und BahnhofGraph
Attributes:
-
name–Name
-
enr–Elementnummer bei Anschlussgleisen. Nur für Agl definiert.
-
typ–Bahnhofelementtyp
Wert Bedeutung Gl Gleis- oder Haltepunktbezeichnung, wie sie in den Fahrplänen vorkommt. Vom Sim deklariert. Bs Bahnsteigbezeichnung, fasst Gleissektoren bzw. Haltepunkte zusammen. Bft Bahnhofteil, fasst Bahnsteige zusammen, auf die ein Zug umdisponiert werden kann. Bf Bahnhof für grafische Darstellung und Fahrzeitauswertung. Agl Anschluss- oder Übergabegleis. Vom Sim deklariert. Anst Anschluss- oder Übergabestelle, fasst Anschlussgleise zusammen auf die ein Zug umdisponiert werden kann. Bst Betriebsstelle. Entweder 'Bf' oder 'Anst'. Stw Stellwerk/Anlage. -
auto–True bei automatischer, False bei manueller Konfiguration.
-
stamm–Name des übergeordneten Knoten. Wird im Konfigurationsimport und -export verwendet und ist ansonsten undefiniert. Der Typ erschliesst sich aus
BAHNHOFELEMENT_HIERARCHIE[typ]. -
ordnung–Sortierordnung innerhalb der Gruppe. Bahnhofelemente innerhalb der Gruppe werden gemäss dem Tupel (ordnung, name) sortiert.
-
gleise–Anzahl Gleise mit dem gleichen Namen. Normalerweise 1, ausser z.B. bei Haltestellen oder Anschlussgleisen ohne Gleisnummer. In diesem Fall wird bei Mehrfachbelegung kein Konflikt angezeigt.
Nur bei Gl, Bs und Agl. Im Moment wird der Wert nur bei Agl automatisch aus dem Signalgraphen ausgewertet. -
einfahrt–True, wenn das Gleis eine Einfahrt ist. Nur für Agl definiert.
-
ausfahrt–True, wenn das Gleis eine Ausfahrt ist. Nur für Agl definiert.
-
sperrung–Gleissperrung
-
linienstil–Linienstil für die Darstellung der Station.