Files
Plugin_SN_Basis/functions/landkreise.py
T

48 lines
1.6 KiB
Python
Raw Normal View History

"""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"