2026-08-27 15:13:43 +02:00
|
|
|
|
"""sn_basis/functions/landkreise.py – Sächsische Landkreise/Helfer mit Kennzahl.
|
|
|
|
|
|
|
2026-08-28 13:54:43 +02:00
|
|
|
|
Daten liegen in sn_basis/data/landkreise.json (auch von anderen sn_*-Modulen
|
|
|
|
|
|
lesbar, z.B. per ``from sn_basis.functions.landkreise import LANDKREISE``).
|
2026-08-27 15:13:43 +02:00
|
|
|
|
"""
|
|
|
|
|
|
|
2026-08-28 13:54:43 +02:00
|
|
|
|
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()
|
2026-08-27 15:13:43 +02:00
|
|
|
|
|
|
|
|
|
|
#: Kennzahl -> Name
|
2026-08-28 13:54:43 +02:00
|
|
|
|
KENNZAHL_ZU_NAME: "dict[str, str]" = dict(LANDKREISE)
|
2026-08-27 15:13:43 +02:00
|
|
|
|
|
|
|
|
|
|
#: Name -> Kennzahl
|
2026-08-28 13:54:43 +02:00
|
|
|
|
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"
|