Bezeichnung statt Name bei ILS KReisel und Eckrad verwendet. Eigene Spalte für Bezeichnung im Sivas Export dazu gebaut
This commit is contained in:
+1
-1
@@ -214,7 +214,7 @@ def build_kreisel_merkmale(block):
|
||||
"Höhe in m": hoehe_m,
|
||||
"Drehrichtung": attribs.get("DREHRICHTUNG", "UZS"),
|
||||
"Drehung": block.get("rotation", 0.0),
|
||||
"Name": attribs.get("NAME", ""),
|
||||
"Name": attribs.get("Bezeichnung", ""),
|
||||
}
|
||||
|
||||
|
||||
|
||||
+21
-2
@@ -4,7 +4,12 @@
|
||||
export_sivas.py - Erzeugt Sivas-Export-CSV mit gruppierten Zeilen und Summierungszeilen.
|
||||
|
||||
Neues CSV-Format:
|
||||
Nr;TeileArt;SivasNummer;Dispogruppe;Anzahl;Laenge[mm];Hoehe[m];details
|
||||
Nr;TeileArt;SivasNummer;Bezeichnung;Dispogruppe;Anzahl;Laenge[mm];Hoehe[m];details
|
||||
|
||||
- Bezeichnung: Wert des Attributs "Bezeichnung" (Kreisel/Eckrad/VF/GF/Strecke).
|
||||
Bei gruppierten Zeilen (mehrere Bloecke je Zeile) kommasepariert.
|
||||
Bei Omniflo-Zeilen (Bogen/Weiche/Gerade) und der Automation-Summenzeile
|
||||
bleibt das Feld leer, da es sich um Sammlungen gleichartiger Objekte handelt.
|
||||
|
||||
- Omniflo Bogen/Weiche: gruppiert nach SivasNummer, Anzahl summiert
|
||||
- Omniflo Gerade: gruppiert nach ARTINR-Attribut, Laenge[mm] summiert
|
||||
@@ -271,7 +276,9 @@ def process_blocks(blocks, lookup):
|
||||
gerade_groups = {}
|
||||
kreisel_list = [] # Liste von blocks
|
||||
eckrad_ids = [] # IDs aller Eckrad-Bloecke
|
||||
eckrad_bezeichnungen = [] # Bezeichnung-Attribut aller Eckrad-Bloecke
|
||||
strecke_ids = [] # IDs loser Strecke-Elemente (Vario/Staustrecke ausserhalb VF_N)
|
||||
strecke_bezeichnungen = [] # Bezeichnung-Attribut loser Strecke-Elemente
|
||||
vario_list = [] # Liste von VarioFoerderer-Compound-Bloecken (VF_N), je einer Zeile
|
||||
gefaelle_list = [] # Liste von Gefaellestrecke-Bloecken (GF_*), je einer Zeile
|
||||
|
||||
@@ -372,6 +379,7 @@ def process_blocks(blocks, lookup):
|
||||
if matches_any(bname, BLOCKPATTERNS.get("pattern_eckrad", [])):
|
||||
counters["anzahl_eckraeder"] += 1
|
||||
eckrad_ids.append(get_id(block))
|
||||
eckrad_bezeichnungen.append(block.get("attribs", {}).get("Bezeichnung", ""))
|
||||
continue
|
||||
|
||||
# --- ILS Kreisel ---
|
||||
@@ -443,6 +451,7 @@ def process_blocks(blocks, lookup):
|
||||
if matches_any(bname, BLOCKPATTERNS.get("pattern_strecke_module", [])):
|
||||
counters["anzahl_variofoerderer"] += 1
|
||||
strecke_ids.append(get_id(block))
|
||||
strecke_bezeichnungen.append(block.get("attribs", {}).get("Bezeichnung", ""))
|
||||
|
||||
# --- Zeilen aufbauen ---
|
||||
items = []
|
||||
@@ -454,6 +463,7 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "Omniflo Bogen",
|
||||
"sivasnr": sivasnr,
|
||||
"sivasnr_quoted": False,
|
||||
"bezeichnung": "",
|
||||
"dispgruppe": 10,
|
||||
"anzahl": g["anzahl"],
|
||||
"laenge_mm": "",
|
||||
@@ -468,6 +478,7 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "Omniflo Weiche",
|
||||
"sivasnr": sivasnr,
|
||||
"sivasnr_quoted": False,
|
||||
"bezeichnung": "",
|
||||
"dispgruppe": 10,
|
||||
"anzahl": g["anzahl"],
|
||||
"laenge_mm": "",
|
||||
@@ -482,6 +493,7 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": "Omniflo Gerade",
|
||||
"sivasnr": g["artinr"],
|
||||
"sivasnr_quoted": True,
|
||||
"bezeichnung": "",
|
||||
"dispgruppe": 10,
|
||||
"anzahl": g["anzahl"],
|
||||
"laenge_mm": int(g["laenge_mm"]),
|
||||
@@ -499,6 +511,7 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": teileart,
|
||||
"sivasnr": sivasnr,
|
||||
"sivasnr_quoted": True,
|
||||
"bezeichnung": block.get("attribs", {}).get("Bezeichnung", ""),
|
||||
"dispgruppe": 20,
|
||||
"anzahl": 1,
|
||||
"laenge_mm": "",
|
||||
@@ -514,6 +527,7 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": teileart,
|
||||
"sivasnr": sivasnr,
|
||||
"sivasnr_quoted": True,
|
||||
"bezeichnung": ", ".join(b for b in eckrad_bezeichnungen if b),
|
||||
"dispgruppe": 20,
|
||||
"anzahl": counters["anzahl_eckraeder"],
|
||||
"laenge_mm": "",
|
||||
@@ -532,6 +546,7 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": teileart,
|
||||
"sivasnr": sivasnr,
|
||||
"sivasnr_quoted": True,
|
||||
"bezeichnung": ", ".join(b for b in strecke_bezeichnungen if b),
|
||||
"dispgruppe": 20,
|
||||
"anzahl": len(strecke_ids),
|
||||
"laenge_mm": "",
|
||||
@@ -549,6 +564,7 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": teileart,
|
||||
"sivasnr": sivasnr,
|
||||
"sivasnr_quoted": True,
|
||||
"bezeichnung": block.get("attribs", {}).get("Bezeichnung", ""),
|
||||
"dispgruppe": 20,
|
||||
"anzahl": 1,
|
||||
"laenge_mm": "",
|
||||
@@ -578,6 +594,7 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": teileart,
|
||||
"sivasnr": sivasnr,
|
||||
"sivasnr_quoted": True,
|
||||
"bezeichnung": ", ".join(b for b in group["bezeichnungen"] if b),
|
||||
"dispgruppe": 20,
|
||||
"anzahl": len(group["ids"]),
|
||||
"laenge_mm": "",
|
||||
@@ -620,6 +637,7 @@ def process_blocks(blocks, lookup):
|
||||
"teileart": auto_teileart,
|
||||
"sivasnr": auto_sivasnr,
|
||||
"sivasnr_quoted": True,
|
||||
"bezeichnung": "",
|
||||
"dispgruppe": 20,
|
||||
"anzahl": 1,
|
||||
"laenge_mm": "",
|
||||
@@ -638,6 +656,7 @@ def format_csv_line(item):
|
||||
f'{item["nr"]}'
|
||||
f';"{item["teileart"]}"'
|
||||
f';{sivasnr}'
|
||||
f';"{item["bezeichnung"]}"'
|
||||
f';{item["dispgruppe"]}'
|
||||
f';{item["anzahl"]}'
|
||||
f';{item["laenge_mm"]}'
|
||||
@@ -669,7 +688,7 @@ def main():
|
||||
|
||||
items, _ = process_blocks(blocks, lookup)
|
||||
|
||||
header = "Nr;TeileArt;SivasNummer;Dispogruppe;Anzahl;Laenge[mm];Hoehe[m];details"
|
||||
header = "Nr;TeileArt;SivasNummer;Bezeichnung;Dispogruppe;Anzahl;Laenge[mm];Hoehe[m];details"
|
||||
with open(output_csv, "w", encoding="utf-8") as f:
|
||||
f.write(header + "\n")
|
||||
for item in items:
|
||||
|
||||
Reference in New Issue
Block a user