list_trackids aus Merkmalen in eigene CSV-Spalte "TrackIds" verschoben

Statt eines JSON-Merkmals bekommen VF_n/GF_n/Kreisel jetzt eine eigene
CSV-Spalte "TrackIds" (nach "Nachbarn", vor "Fehler") mit der Reihenfolge
der Separator-/BTMT-/AS-ES-/Weichen-TeileIds entlang der Strecke bzw. um
den Kreisel - analog zur bestehenden "Nachbarn"-Spalte statt versteckt im
Merkmale-JSON. Referenz-CSV fuer den Omniflo-Test an den neuen Header
angepasst.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-10 15:07:31 +02:00
parent 3c0900a02b
commit 28dc3b4301
5 changed files with 158 additions and 146 deletions
+4 -3
View File
@@ -263,11 +263,12 @@ plus den naechstgelegenen rohen INSERT-Punkt (Item-Felder `_x`/`_y` vs. die
sepliste-Koordinate) — beide stammen aus derselben Bauphase und liegen daher
nah beieinander, auch wenn sie nicht exakt uebereinstimmen.
### Das Merkmal `"list_trackids"` — Reihenfolge als Item-Merkmal
### Die Spalte `"TrackIds"` — Reihenfolge als eigene CSV-Spalte
Zusaetzlich zur `"Nachbarn"`-Spalte (Vorgaenger/Nachfolger je Zeile) traegt
`write_separatorliste_merkmale` (`lib/export_csv.py`) jeder VF_n/GF_n-Zeile
das Merkmal `"list_trackids"` ein: die TeileIds ihrer SEP-Eintraege in
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
@@ -287,7 +288,7 @@ zurueckgegebene Liste beginnt IMMER bei Winkel 0 Grad (Kapsel-Achsrichtung,
kleinster Winkel >= 0 Grad in Umlaufrichtung) — `write_kreisel_
separatorliste_merkmale` loest die rohen Umlauf-Schluessel (TeileId eines
freien Punkts, sep_kette-Schluessel oder Weichen-Key) auf echte TeileIds auf
und schreibt sie kommagetrennt als `"list_trackids"` auf den Kreisel selbst.
und schreibt sie kommagetrennt in `item["trackids"]` auf den Kreisel selbst.
Muss darum NACH `resolve_umlauf_und_sepliste_nachbarn` (bzw. nach allen
Zeilen-Registrierungen: `build_kreisel_weiche_items`, `build_strecke_
schleus_items`, `map_separator_kette_items`) laufen.