TrackIds von VF/GF-Strecken um AS-/ES-Kettenenden ergaenzt

write_separatorliste_merkmale liess bisher nur "SEP"-Eintraege der
sepliste in die "TrackIds"-Spalte einfliessen; die AS-/ES-Ausschleus-
/Einschleuselemente an Anfang und Ende der Kette fehlten dadurch,
obwohl sie beim Kreisel (compute_kreisel_umlauf) bereits Teil von
dessen TrackIds sind. Jetzt werden alle sepliste-Eintraege (AS, SEP,
ES) in Baureihenfolge aufgeloest.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-10 15:18:55 +02:00
parent b577b7ad69
commit 47724fcfe2
3 changed files with 55 additions and 22 deletions
+12 -6
View File
@@ -275,12 +275,18 @@ nah beieinander, auch wenn sie nicht exakt uebereinstimmen.
Zusaetzlich zur `"Nachbarn"`-Spalte (Vorgaenger/Nachfolger je Zeile) traegt
`write_separatorliste_merkmale` (`lib/export_csv.py`) jeder VF_n/GF_n-Zeile
die eigene Spalte `"TrackIds"` (`item["trackids"]`, Top-Level-Feld wie
`"nachbarn"` — KEIN Merkmal) ein: die TeileIds ihrer SEP-Eintraege in
Baureihenfolge, kommagetrennt (z.B. `"0052, 0053, 0054"`). Quelle ist die
rohe `sepliste` des Items (nicht `sep_kette`, dessen dict-Reihenfolge nicht
garantiert ist). Muss NACH `map_separator_kette_items` laufen, weil erst
dann jeder sepliste-SEP-Schluessel auf sein reales Separator-Item (TeileId)
aufgeloest ist.
`"nachbarn"` — KEIN Merkmal) ein: die TeileIds von AS-Ende, Separatoren UND
ES-Ende in Baureihenfolge, kommagetrennt (z.B. `"0051, 0052, 0053, 0054,
0055"` fuer AS, zwei SEP, ES). AS/ES zaehlen mit, weil sie beim Kreisel
(siehe unten) ebenfalls Teil von dessen `TrackIds` sind — ohne sie fehlten
hier die Kettenenden. Quelle ist die rohe `sepliste` des Items (nicht
`sep_kette`, dessen dict-Reihenfolge nicht garantiert ist). Muss NACH
`map_separator_kette_items`/`build_strecke_schleus_items` laufen, weil erst
dann jeder sepliste-Schluessel (AS/SEP/ES) auf sein reales Item (TeileId)
aufgeloest ist. Beruehrt ein Streckenende geometrisch KEINEN Kreisel,
entsteht dort keine AS/ES-Zeile (`build_strecke_schleus_items`) und damit
auch keine TeileId — dieses Ende fehlt dann in `TrackIds` (kein Fehler,
sondern Folge der fehlenden Kollision).
`write_kreisel_separatorliste_merkmale` ueberträgt dasselbe Prinzip auf
echte Kreisel (`"ILS 2.0 Kreisel"`): Quelle ist hier NICHT die sepliste