"""sn_basis/functions/landkreise.py – Sächsische Landkreise/Helfer mit Kennzahl. Daten liegen in sn_basis/data/landkreise.json (auch von anderen sn_*-Modulen lesbar, z.B. per ``from sn_basis.functions.landkreise import LANDKREISE``). """ import json import os try: from qgis.core import Qgis, QgsMessageLog except Exception: # Mock-Modus / außerhalb QGIS Qgis = None QgsMessageLog = None # .../sn_basis/data/landkreise.json (eine Ebene über dieser Datei, dann data/) _DATA_DATEI = os.path.join(os.path.dirname(os.path.dirname(__file__)), "data", "landkreise.json") def _lade_landkreise() -> "list[tuple[str, str]]": try: with open(_DATA_DATEI, "r", encoding="utf-8") as f: rohdaten = json.load(f) return [(eintrag["kennzahl"], eintrag["name"]) for eintrag in rohdaten] except Exception as exc: if QgsMessageLog is not None: QgsMessageLog.logMessage( f"landkreise.json konnte nicht geladen werden ({_DATA_DATEI}): {exc}", "sn_basis", Qgis.Warning, ) else: print(f"⚠️ landkreise.json konnte nicht geladen werden ({_DATA_DATEI}): {exc}") return [] #: Liste von (Landkreiskennzahl, Landkreis/Helfer)-Tupeln, in Datei-Reihenfolge. LANDKREISE: "list[tuple[str, str]]" = _lade_landkreise() #: Kennzahl -> Name KENNZAHL_ZU_NAME: "dict[str, str]" = dict(LANDKREISE) #: Name -> Kennzahl NAME_ZU_KENNZAHL: "dict[str, str]" = {name: kennzahl for kennzahl, name in LANDKREISE} #: Sentinel-"Kennzahl" für die Auswahl "Alle Landkreise" (kein Landkreis-Filter). ALLE_LANDKREISE = "ALLE"