Beim Erstellen einer §-38-/§-41-Vorlage wird ausgewertet, welche Objekte des basemap.de-Vektorkachel-Layers im Verfahrensgebiet (wahlweise im Druckbereich) tatsächlich dargestellt werden. Der Nutzer wählt in einem Dialog Kategorien ab, die gewählten erscheinen mit der Signatur des Projektlayers in einem eigenen Legendenelement „Kartengrundlage (basemap.de)“ über der Quellenangabe. Dazu kommt ein einklappbarer Bereich „Basemap“ im Druck-Tab mit Auswertebereich, „Basemap-Legende aktualisieren“ und lokalen Stilvorlagen des Basemap-Layers (mehrere Varianten, Standard markierbar). Issue: #88. Konzept: Projektwissen docs/konzept/10_basemap_legende.md, Entscheidung: ADR 0010.
Wie geprüft
python scripts/run_tests.py sn_basis --baseline: [sn_basis] GRÜN: 396/396 bestanden, 0 Fehlschläge, 0 Fehler, 0 übersprungen – unverändert gegenüber Baseline; 67 neue Testfälle (6 Testdateien tests/test_basemap_*.py), alle mit Docstring.
QGIS-Test: QGIS 3.44.4 (Qt5), offscreen per python-qgis.bat, echte basemap.de-Kacheln, Testgebiet 619 ha bei Meißen:
Auswertung 1 s (Kacheln aus dem Cache), 57 Kategorien gefunden, Zuordnung und Symbole geprüft (gerenderte Legende als PNG angesehen: Straßen mit Kontur/Decker, gestrichelte Wege, Rastersymbole, Flächen).
create_single_page_layout(..., basemap_legende=True) in einem §-41-Layout: Legende sitzt über der Quellenangabe, 1–3 Spalten, nie über den Seitenrand; zweiter Lauf ersetzt statt zu verdoppeln.
Mehrfachauswahl-Dialog mit echten Widgets (Gruppenköpfe nicht ankreuzbar, Suche, Rückgabe).
Stilvorlage am echten Layer: Hausnummern aus → speichern → Layer zurücksetzen → laden → Hausnummern wieder aus.
Basemap-Bereich aufgebaut, aufgeklappt, Layout- und Stilvorlagenliste gefüllt.
Projekt mit Basemap-Legende gespeichert und neu geladen: Legende und Hilfslayer bleiben erhalten.
Nicht geprüft: QGIS 4 (Qt6) und die Bedienung in der echten QGIS-Oberfläche – bitte vor dem Merge einmal im Druck-Tab durchklicken.
Änderungen an Verträgen
Neue Projektvariablen basemap_auswertebereich, basemap_legende_erzeugen, basemap_legende_auswahl; Layout-Eigenschaften sn_basemap_*; QSettings sn_basis/basemap_standardstil.
Neue öffentliche Funktion dialog_wrapper.ask_mehrfachauswahl; neuer optionaler Parameter PrintLayout.create_single_page_layout(..., basemap_legende=False) (Standard unverändert, keine Aufrufer in Fachplugins betroffen).
Neue Wrapper-Symbole (eigener Block in qgiscore_wrapper: Vektorkacheln, Ausdrücke, Kategorisierung, Legende, QgsLayoutUtils/QgsLayoutMeasurement; QgsRectangle bekam einen Mock); qt_wrapper: QSize, ItemIsUserCheckable, ItemIsEnabled, CheckStateChecked/Unchecked, UserRole.
Dokumentiert in schnittstellen.md Abschnitt 3 und 11.
Übergabenotiz
Aufgabe: Plugin_SN_Basis #88 – Legende für die basemap.de-Vektorkacheln im Drucklayout, nur mit den tatsächlich vorkommenden Kategorien. Stand: fertig zur Durchsicht; fachliche Abnahme des Legendenkatalogs steht aus. Geändert:
data/basemap_legende.json (neu) – Legendenkatalog: 434 Styles → 190 Einträge, erster fachlicher Durchgang der Bezeichnungen.
modules/basemap_katalog.py (neu) – erzeugt/aktualisiert den Katalog aus der Style-JSON, erhält Nachbearbeitung.
Eigenes Legendenelement statt Einträge in der Hauptlegende (ADR 0010): die Hauptlegende filtert nach Karteninhalt und würde die Hilfslayer ausblenden.
Ausgewertet wird nur der erste sichtbare Basemap-Layer (Hinweis, wenn mehrere sichtbar sind).
Brücken-, Tunnel- und Fahrbahnvarianten gehen im Grundeintrag auf; „im Bau“/„außer Betrieb“ eigene Einträge; Beschriftungen, Hausnummern, Nummernschilder, Hintergrund, Mittellinien nie.
Die Legende ist eine Momentaufnahme; nach Änderungen an Karte oder Stil „Basemap-Legende aktualisieren“. Offen / nächste Schritte:
Fachliche Durchsicht des Katalogs (Bezeichnungen, Gruppen, Reihenfolge) – Vorschlag: 22munzke / 22ottomi. Bekannte Punkte: „Platz“ (weiße Fläche ohne Rand), „Durchlass, Düker“ und „Baumreihe“ ohne gut sichtbares Symbol.
Test unter QGIS 4 (Qt6) und einmal in der echten Oberfläche.
Optional später: mitgelieferte Stilvorlagen im Plugin, gemeinsamer Vorlagenordner für eine Behörde. Wissensbasis: Projektwissen-Branch docs/88-basemap-konzept: Konzept Abschnitt 10, ADR 0010, schnittstellen.md (3, 11), modulkarte.md, fallstricke.md (Legendengröße vor dem Zeichnen, Kartenfilter, Vektorkachel-Zoom, QT_VERSION unter QGIS 3, Mock-Lücken, Offscreen-Spike), STATUS.md Punkt 15, Testkatalog neu erzeugt. Kontext für die nächste Sitzung:sn_basis/modules/basemap_legende.py (BasemapLegende.aktualisiere), sn_basis/data/basemap_legende.json, Konzept docs/konzept/10_basemap_legende.md Abschnitt 10.
Checkliste
Nur Änderungen zum Issue (plus fehlender QgsRectangle-Mock, der für die Tests nötig war)
## Was
Beim Erstellen einer §-38-/§-41-Vorlage wird ausgewertet, welche Objekte des basemap.de-Vektorkachel-Layers im Verfahrensgebiet (wahlweise im Druckbereich) tatsächlich dargestellt werden. Der Nutzer wählt in einem Dialog Kategorien ab, die gewählten erscheinen mit der Signatur des Projektlayers in einem eigenen Legendenelement „Kartengrundlage (basemap.de)“ über der Quellenangabe. Dazu kommt ein einklappbarer Bereich „Basemap“ im Druck-Tab mit Auswertebereich, „Basemap-Legende aktualisieren“ und lokalen Stilvorlagen des Basemap-Layers (mehrere Varianten, Standard markierbar). Issue: #88. Konzept: Projektwissen `docs/konzept/10_basemap_legende.md`, Entscheidung: ADR 0010.
## Wie geprüft
- `python scripts/run_tests.py sn_basis --baseline`: `[sn_basis] GRÜN: 396/396 bestanden, 0 Fehlschläge, 0 Fehler, 0 übersprungen` – unverändert gegenüber Baseline; 67 neue Testfälle (6 Testdateien `tests/test_basemap_*.py`), alle mit Docstring.
- `python scripts/pruefe_umlaute.py Plugin_SN_Basis`: 0 Funde.
- QGIS-Test: **QGIS 3.44.4 (Qt5), offscreen per `python-qgis.bat`**, echte basemap.de-Kacheln, Testgebiet 619 ha bei Meißen:
- Auswertung 1 s (Kacheln aus dem Cache), 57 Kategorien gefunden, Zuordnung und Symbole geprüft (gerenderte Legende als PNG angesehen: Straßen mit Kontur/Decker, gestrichelte Wege, Rastersymbole, Flächen).
- `create_single_page_layout(..., basemap_legende=True)` in einem §-41-Layout: Legende sitzt über der Quellenangabe, 1–3 Spalten, nie über den Seitenrand; zweiter Lauf ersetzt statt zu verdoppeln.
- Mehrfachauswahl-Dialog mit echten Widgets (Gruppenköpfe nicht ankreuzbar, Suche, Rückgabe).
- Stilvorlage am echten Layer: Hausnummern aus → speichern → Layer zurücksetzen → laden → Hausnummern wieder aus.
- Basemap-Bereich aufgebaut, aufgeklappt, Layout- und Stilvorlagenliste gefüllt.
- Projekt mit Basemap-Legende gespeichert und neu geladen: Legende und Hilfslayer bleiben erhalten.
- **Nicht geprüft:** QGIS 4 (Qt6) und die Bedienung in der echten QGIS-Oberfläche – bitte vor dem Merge einmal im Druck-Tab durchklicken.
## Änderungen an Verträgen
- Neue Projektvariablen `basemap_auswertebereich`, `basemap_legende_erzeugen`, `basemap_legende_auswahl`; Layout-Eigenschaften `sn_basemap_*`; QSettings `sn_basis/basemap_standardstil`.
- Neue öffentliche Funktion `dialog_wrapper.ask_mehrfachauswahl`; neuer optionaler Parameter `PrintLayout.create_single_page_layout(..., basemap_legende=False)` (Standard unverändert, keine Aufrufer in Fachplugins betroffen).
- Neue Wrapper-Symbole (eigener Block in `qgiscore_wrapper`: Vektorkacheln, Ausdrücke, Kategorisierung, Legende, `QgsLayoutUtils`/`QgsLayoutMeasurement`; `QgsRectangle` bekam einen Mock); `qt_wrapper`: `QSize`, `ItemIsUserCheckable`, `ItemIsEnabled`, `CheckStateChecked/Unchecked`, `UserRole`.
- Dokumentiert in `schnittstellen.md` Abschnitt 3 und 11.
## Übergabenotiz
**Aufgabe:** Plugin_SN_Basis #88 – Legende für die basemap.de-Vektorkacheln im Drucklayout, nur mit den tatsächlich vorkommenden Kategorien.
**Stand:** fertig zur Durchsicht; fachliche Abnahme des Legendenkatalogs steht aus.
**Geändert:**
- `data/basemap_legende.json` (neu) – Legendenkatalog: 434 Styles → 190 Einträge, erster fachlicher Durchgang der Bezeichnungen.
- `modules/basemap_katalog.py` (neu) – erzeugt/aktualisiert den Katalog aus der Style-JSON, erhält Nachbearbeitung.
- `modules/basemap_legende.py`, `basemap_kacheln.py`, `basemap_legende_layout.py` (neu) – Auswertung, Zuordnung, Legendenelement.
- `modules/basemap_stilvorlagen.py`, `ui/widgets/basemap_bereich.py` (neu) – Stilvorlagen und Basemap-Bereich.
- `modules/print_layout.py`, `print_logic.py`, `ui/tabs/print_tab.py` – Anbindung (§38/§41 über `LAYOUTS_MIT_BASEMAP_LEGENDE`).
- `functions/qgiscore_wrapper.py`, `qt_wrapper.py`, `dialog_wrapper.py` – Wrapper-Symbole, Mehrfachauswahl-Dialog.
- `changelog.txt`.
**Nachweis:** siehe „Wie geprüft“.
**Entscheidungen/Annahmen:**
- Eigenes Legendenelement statt Einträge in der Hauptlegende (ADR 0010): die Hauptlegende filtert nach Karteninhalt und würde die Hilfslayer ausblenden.
- Ausgewertet wird nur der erste sichtbare Basemap-Layer (Hinweis, wenn mehrere sichtbar sind).
- Brücken-, Tunnel- und Fahrbahnvarianten gehen im Grundeintrag auf; „im Bau“/„außer Betrieb“ eigene Einträge; Beschriftungen, Hausnummern, Nummernschilder, Hintergrund, Mittellinien nie.
- Die Legende ist eine Momentaufnahme; nach Änderungen an Karte oder Stil „Basemap-Legende aktualisieren“.
**Offen / nächste Schritte:**
1. Fachliche Durchsicht des Katalogs (Bezeichnungen, Gruppen, Reihenfolge) – Vorschlag: 22munzke / 22ottomi. Bekannte Punkte: „Platz“ (weiße Fläche ohne Rand), „Durchlass, Düker“ und „Baumreihe“ ohne gut sichtbares Symbol.
2. Test unter QGIS 4 (Qt6) und einmal in der echten Oberfläche.
3. Optional später: mitgelieferte Stilvorlagen im Plugin, gemeinsamer Vorlagenordner für eine Behörde.
**Wissensbasis:** Projektwissen-Branch `docs/88-basemap-konzept`: Konzept Abschnitt 10, ADR 0010, `schnittstellen.md` (3, 11), `modulkarte.md`, `fallstricke.md` (Legendengröße vor dem Zeichnen, Kartenfilter, Vektorkachel-Zoom, `QT_VERSION` unter QGIS 3, Mock-Lücken, Offscreen-Spike), `STATUS.md` Punkt 15, Testkatalog neu erzeugt.
**Kontext für die nächste Sitzung:** `sn_basis/modules/basemap_legende.py` (`BasemapLegende.aktualisiere`), `sn_basis/data/basemap_legende.json`, Konzept `docs/konzept/10_basemap_legende.md` Abschnitt 10.
## Checkliste
- [x] Nur Änderungen zum Issue (plus fehlender `QgsRectangle`-Mock, der für die Tests nötig war)
- [x] Keine direkten Qt/QGIS-Importe, keine Debug-`print`
- [x] `changelog.txt` ergänzt
- [x] Wissensbasis nachgezogen
🤖 Generated with [Claude Code](https://claude.com/claude-code)
data/basemap_legende.json ordnet die darstellenden Styles der basemap.de-Style-JSON
(bm_web_col.json) Legendeneinträgen zu: 434 Styles in 190 Einträgen, Kontur/Decker/
Brücken-/Fahrbahnvarianten je Straßenklasse zusammengefasst, Beschriftungen,
Nummernschilder und Hintergrund ausgeschlossen. modules/basemap_katalog.py erzeugt den
Katalog (nur Standardbibliothek, auch eigenständig aufrufbar) und erhält dabei die
fachliche Nachbearbeitung; erster Durchgang der Bezeichnungen ist erledigt, die
fachliche Abnahme steht aus.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Beim Erstellen einer §38-/§41-Vorlage wertet BasemapLegende die Kacheln des sichtbaren
basemap.de-Layers im Verfahrensgebiet (wahlweise Druckbereich) kachelweise über
selectByGeometry aus, prüft die Renderer-Styles mit derselben Zoomlogik wie QGIS und
bildet daraus Legendeneinträge. Ein Mehrfachauswahl-Dialog (neu: ask_mehrfachauswahl)
lässt Kategorien abwählen; die Auswahl wird im Projekt gemerkt. Die gewählten Einträge
stehen mit der Signatur des Projektlayers (zoomabhängige Werte festgeschrieben) in
einem eigenen Legendenelement über der Quellenangabe. Ein eigenes Element ist nötig,
weil die nach Karteninhalt filternde Hauptlegende die Hilfslayer ausblenden würde.
Wrapper um die nötigen QGIS-/Qt-Symbole mit Mock ergänzt (eigener Block in
qgiscore_wrapper; QgsRectangle hatte bisher keinen Mock).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Einklappbarer Bereich „Basemap“: Auswertebereich (Verfahrensgebiet/Druckbereich),
Basemap-Legende beim Erstellen an/aus, „Basemap-Legende aktualisieren“ für
bestehende Vorlagen und Stilvorlagen des Basemap-Layers. Stilvorlagen liegen lokal im
QGIS-Profil (QML plus Begleitdatei mit Legendenauswahl), mehrere Varianten, eine als
Standard markierbar; geladen wird nur auf Knopfdruck nach Rückfrage, fremde Varianten
(andere Style-Namen) erst nach zweiter Bestätigung.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Daniel
merged commit 8693fedada into unstable2026-10-02 10:17:20 +00:00
Daniel
deleted branch feature/88-basemap-legende2026-10-02 10:17:20 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Was
Beim Erstellen einer §-38-/§-41-Vorlage wird ausgewertet, welche Objekte des basemap.de-Vektorkachel-Layers im Verfahrensgebiet (wahlweise im Druckbereich) tatsächlich dargestellt werden. Der Nutzer wählt in einem Dialog Kategorien ab, die gewählten erscheinen mit der Signatur des Projektlayers in einem eigenen Legendenelement „Kartengrundlage (basemap.de)“ über der Quellenangabe. Dazu kommt ein einklappbarer Bereich „Basemap“ im Druck-Tab mit Auswertebereich, „Basemap-Legende aktualisieren“ und lokalen Stilvorlagen des Basemap-Layers (mehrere Varianten, Standard markierbar). Issue: #88. Konzept: Projektwissen
docs/konzept/10_basemap_legende.md, Entscheidung: ADR 0010.Wie geprüft
python scripts/run_tests.py sn_basis --baseline:[sn_basis] GRÜN: 396/396 bestanden, 0 Fehlschläge, 0 Fehler, 0 übersprungen– unverändert gegenüber Baseline; 67 neue Testfälle (6 Testdateientests/test_basemap_*.py), alle mit Docstring.python scripts/pruefe_umlaute.py Plugin_SN_Basis: 0 Funde.python-qgis.bat, echte basemap.de-Kacheln, Testgebiet 619 ha bei Meißen:create_single_page_layout(..., basemap_legende=True)in einem §-41-Layout: Legende sitzt über der Quellenangabe, 1–3 Spalten, nie über den Seitenrand; zweiter Lauf ersetzt statt zu verdoppeln.Änderungen an Verträgen
basemap_auswertebereich,basemap_legende_erzeugen,basemap_legende_auswahl; Layout-Eigenschaftensn_basemap_*; QSettingssn_basis/basemap_standardstil.dialog_wrapper.ask_mehrfachauswahl; neuer optionaler ParameterPrintLayout.create_single_page_layout(..., basemap_legende=False)(Standard unverändert, keine Aufrufer in Fachplugins betroffen).qgiscore_wrapper: Vektorkacheln, Ausdrücke, Kategorisierung, Legende,QgsLayoutUtils/QgsLayoutMeasurement;QgsRectanglebekam einen Mock);qt_wrapper:QSize,ItemIsUserCheckable,ItemIsEnabled,CheckStateChecked/Unchecked,UserRole.schnittstellen.mdAbschnitt 3 und 11.Übergabenotiz
Aufgabe: Plugin_SN_Basis #88 – Legende für die basemap.de-Vektorkacheln im Drucklayout, nur mit den tatsächlich vorkommenden Kategorien.
Stand: fertig zur Durchsicht; fachliche Abnahme des Legendenkatalogs steht aus.
Geändert:
data/basemap_legende.json(neu) – Legendenkatalog: 434 Styles → 190 Einträge, erster fachlicher Durchgang der Bezeichnungen.modules/basemap_katalog.py(neu) – erzeugt/aktualisiert den Katalog aus der Style-JSON, erhält Nachbearbeitung.modules/basemap_legende.py,basemap_kacheln.py,basemap_legende_layout.py(neu) – Auswertung, Zuordnung, Legendenelement.modules/basemap_stilvorlagen.py,ui/widgets/basemap_bereich.py(neu) – Stilvorlagen und Basemap-Bereich.modules/print_layout.py,print_logic.py,ui/tabs/print_tab.py– Anbindung (§38/§41 überLAYOUTS_MIT_BASEMAP_LEGENDE).functions/qgiscore_wrapper.py,qt_wrapper.py,dialog_wrapper.py– Wrapper-Symbole, Mehrfachauswahl-Dialog.changelog.txt.Nachweis: siehe „Wie geprüft“.
Entscheidungen/Annahmen:
Offen / nächste Schritte:
Wissensbasis: Projektwissen-Branch
docs/88-basemap-konzept: Konzept Abschnitt 10, ADR 0010,schnittstellen.md(3, 11),modulkarte.md,fallstricke.md(Legendengröße vor dem Zeichnen, Kartenfilter, Vektorkachel-Zoom,QT_VERSIONunter QGIS 3, Mock-Lücken, Offscreen-Spike),STATUS.mdPunkt 15, Testkatalog neu erzeugt.Kontext für die nächste Sitzung:
sn_basis/modules/basemap_legende.py(BasemapLegende.aktualisiere),sn_basis/data/basemap_legende.json, Konzeptdocs/konzept/10_basemap_legende.mdAbschnitt 10.Checkliste
QgsRectangle-Mock, der für die Tests nötig war)printchangelog.txtergänzt🤖 Generated with Claude Code