import csv import numpy as np import os import webbrowser from datetime import datetime class Export: def __init__(self) -> None: pass @staticmethod def matrix_to_csv(dateiname: str, liste_spaltenbeschriftung: list, liste_zeilenbeschriftung: list, Matrix: np.matrix | sp.Matrix, beschriftung_kopfzeile: object = "") -> None: with open(dateiname, "w", newline="", encoding="utf-8") as csvfile: writer = csv.writer(csvfile, delimiter=";") kopfzeile = [beschriftung_kopfzeile] for spaltenbeschriftung in liste_spaltenbeschriftung: kopfzeile.append(str(spaltenbeschriftung)) writer.writerow(kopfzeile) for zeilenbeschriftung, zeile in zip(liste_zeilenbeschriftung, Matrix.tolist()): zeile_als_text = [zeilenbeschriftung] for eintrag in zeile: try: eintrag_text = str(eintrag).replace(".", ",") try: eintrag_text = float(eintrag_text) except: eintrag_text = eintrag_text except Exception: eintrag_text = str(eintrag) zeile_als_text.append(eintrag_text) writer.writerow(zeile_als_text) @staticmethod def ausgleichung_to_datei(dateiname: str, dict_ausgleichung: dict) -> None: with open(dateiname, "w", newline="", encoding="utf-8") as csvfile: writer = csv.writer(csvfile, delimiter=";") writer.writerow(["Parameter", "Wert"]) for key, value in dict_ausgleichung.items(): if hasattr(value, "tolist"): rows = value.rows cols = value.cols writer.writerow([key, f"Matrix {rows}x{cols}"]) for i, zeile in enumerate(value.tolist()): zeile_als_text = [f"{key}_zeile_{i+1}"] for eintrag in zeile: try: eintrag_float = float(eintrag) eintrag_text = f"{eintrag_float}".replace(".", ",") try: eintrag_text = float(eintrag_text) except: eintrag_text = eintrag_text except Exception: eintrag_text = str(eintrag) zeile_als_text.append(eintrag_text) writer.writerow(zeile_als_text) else: try: value_float = float(value) value_text = f"{value_float}".replace(".", ",") except Exception: value_text = str(value) writer.writerow([key, value_text]) def speichere_html_protokoll(metadaten, ergebnisse): # Pfad für den Ordner erstellen ordner = "Protokolle" if not os.path.exists(ordner): os.makedirs(ordner) dateiname = f"{ordner}/Protokoll_{metadaten['projekt']}.html" abs_path = os.path.abspath(dateiname) # HTML Inhalt zusammenbauen html_content = f""" Netzprotokoll - {metadaten['projekt']}

Netzprotokoll: {metadaten['projekt']}

Bearbeiter: {metadaten['bearbeiter']}

Datum: {metadaten['datum']}

Ausgleichungsmodus: Methode der kleinsten Quadrate (L2-Norm)

1. Globaltest

{ergebnisse['df_globaltest'].to_html(index=False)}

2. Redundanzanteile

{ergebnisse['df_redundanz'].to_html(index=False)}

3. Standardellipsen

{ergebnisse['df_ellipsen'].to_html(index=False)}

3. Konfidenzellipsen

{ergebnisse['df_konfidenzellipsen'].to_html(index=False)}

3. Koordinaten Geozentrisch Kartesisch

{ergebnisse['df_koordinaten_geozentrisch_kartesisch'].to_html(index=True)}

3. Koordinaten UTM

{ergebnisse['df_koordinaten_utm'].to_html(index=True)} """ # Datei schreiben with open(dateiname, "w", encoding="utf-8") as f: f.write(html_content) print(f"✅ Protokoll wurde gespeichert unter: {abs_path}") # Datei automatisch im Standard-Browser öffnen webbrowser.open(f"file://{abs_path}")