Basemap hinzufügen und Thema wechseln im Basemap-Bereich (#100) #103

Merged
Daniel merged 1 commits from feature/100-basemap-themen into unstable 2026-10-05 19:44:36 +00:00
Member

Was

Der Basemap-Bereich im Druck-Tab bekommt einen Abschnitt „Basemap-Layer“ mit dem Knopf „Basemap hinzufügen“ und der Auswahl „Thema“ (Farbe, Grau; Standard Farbe). Ein vorhandener Layer wird an der identischen Kachel-URL erkannt (Rückfrage „Zusätzlich laden“ / „Ersetzen“ / „Abbrechen“), und vor einem Themenwechsel wird über einen Prüfwert erkannt, ob die Darstellung ungespeichert verändert wurde („Als Stil speichern …“ / „Verwerfen“ / „Abbrechen“). Issue: #100

Wie geprüft

  • python scripts/run_tests.py sn_basis --baseline: GRÜN 459/459, unverändert gegenüber Baseline (30 neue Tests in tests/test_basemap_themen.py)
  • sn_plan41: unverändert gegenüber Baseline. sn_verfahrensgebiet: 3 „NEU ROT“ und 8 „neu grün“ in verfahrensgebiet_alkis_komplett/verfahrensgebiet_shape_komplett – betrifft keinen geänderten Code, Baseline von Verfahrensgebiet ist gegenüber unstable verschoben
  • QGIS-Test (manuell, 05.10.2026, Daniel): die sechs Prüfschritte aus der Übergabenotiz durchgespielt, alles wie erwartet – Laden über styleUrl vollständig, Rückfrage bei vorhandenem Layer mit allen drei Wegen, Themenwechsel ohne Fehlalarm (Prüfwert stabil), Erkennung geänderter Darstellung samt „Als Stil speichern …“, Prüfwert nach Speichern und Neuladen des Projekts erhalten, Ziel-Layer bei zwei Basemap-Layern

Änderungen an Verträgen

  • Neue öffentliche Funktionen dialog_wrapper.ask_auswahl und qgisui_wrapper.get_active_layer (nur Ergänzungen, keine bestehende Signatur geändert)
  • Neue Layer-Eigenschaften sn_basemap_thema, sn_basemap_pruefwert; Stilvorlagen-JSON mit Feld thema
  • Dokumentiert in schnittstellen.md Abschnitt 11 (Projektwissen-Branch docs/100-basemap-themen)

Übergabenotiz

Stand: fertig, QGIS-Test bestanden. Branch feature/100-basemap-themen (1 Commit), Doku auf Projektwissen:docs/100-basemap-themen.

Entscheidungen (mit Daniel am 05.10.2026 abgestimmt):

  • Begriffe: Thema = Style-JSON des Dienstes, Stil = lokale Anpassung (Stilvorlage). Im Glossar eingetragen.
  • „Schon vorhanden“ = identische Kachel-URL (alle Themen teilen sie, daher themenunabhängig).
  • Themen nur Farbe und Grau; Relief bleibt vorerst weg (braucht Höhenlinien-Kacheln und WMS-Schummerung als weitere Quellen).
  • Das Thema-Dropdown wirkt auf den im Layerbaum ausgewählten Basemap-Layer, sonst auf den ersten. Laden/Speichern von Stilen und „Punktlinien korrigieren“ nutzen jetzt dieselbe Regel (bei nur einem Basemap-Layer wie bisher).
  • „Ersetzen“ legt keinen neuen Layer an, sondern lädt den vorhandenen im gewählten Thema neu (setDataSource + loadDefaultStyle): Layer-ID, Position im Layerbaum und Bezüge in Layouts/Kartenthemen bleiben. Ein selbst vergebener Layername bleibt, der automatische („basemap.de - Farbe“) wird angepasst.
  • Ungespeicherte Änderungen: SHA-256 der QML (Symbologie + Beschriftung, ohne QGIS-Version) als Layer-Eigenschaft nach Laden eines Themas/Stils und nach Speichern als Stil. Ohne gemerkten Prüfwert (ältere Layer) wird vorsichtshalber nachgefragt.

Im QGIS-Test geprüft (05.10.2026, alles wie erwartet):

  1. „Basemap hinzufügen“ ohne Basemap im Projekt: Layer erscheint ganz unten, Symbole und Beschriftung vollständig (Laden über styleUrl mit loadDefaultStyle()).
  2. Zweites Mal klicken: Rückfrage nennt den Layer; „Zusätzlich laden“, „Ersetzen“, „Abbrechen“ durchspielen.
  3. Thema auf „Grau“ und zurück: Darstellung wechselt, keine Rückfrage, solange nichts geändert wurde. Wichtigster Punkt: Wenn hier trotzdem „verändert“ gemeldet wird, ist die QML nicht stabil und der Prüfwert muss anders gebildet werden.
  4. Hausnummern ausschalten, dann Thema wechseln: Rückfrage „verändert“; „Als Stil speichern …“ legt die Vorlage an (JSON mit "thema"), danach Wechsel.
  5. Projekt speichern, neu öffnen, Thema wechseln: Prüfwert aus der Projektdatei wird erkannt (keine Rückfrage).
  6. Zwei Basemap-Layer, einen davon im Layerbaum auswählen, Bereich auf- und zuklappen: Status und Dropdown zeigen den ausgewählten Layer.

Bekannte Grenze: Das Dropdown aktualisiert sich nicht von selbst, wenn im Layerbaum ein anderer Layer ausgewählt wird (erst beim Aufklappen oder nach einer Aktion). Der Wechsel selbst trifft immer den aktuell ausgewählten Layer. Eine Anbindung an iface.currentLayerChanged wäre ein kleines Folge-Issue.

Prüfwert-Aufwand: Jede Prüfung schreibt die rund 3,7 MB große QML einmal in eine temporäre Datei.

Folge-Issues: #101 (Import/Export der Stile; das Feld thema ist schon vorbereitet), P10 Vektor (Entwurf liegt vor), Relief.

Checkliste

  • Nur Änderungen zum Issue (plus gleiche Ziel-Layer-Regel für die bestehenden Stil-Knöpfe, siehe oben)
  • Keine direkten Qt/QGIS-Importe, keine Debug-print (nur die Fehlermeldung in ask_auswahl wie bei den Nachbarfunktionen)
  • changelog.txt ergänzt
  • Wissensbasis nachgezogen (schnittstellen, fallstricke, glossar, modulkarte, STATUS, Testkatalog)

🤖 Generated with Claude Code

## Was Der Basemap-Bereich im Druck-Tab bekommt einen Abschnitt „Basemap-Layer“ mit dem Knopf „Basemap hinzufügen“ und der Auswahl „Thema“ (Farbe, Grau; Standard Farbe). Ein vorhandener Layer wird an der identischen Kachel-URL erkannt (Rückfrage „Zusätzlich laden“ / „Ersetzen“ / „Abbrechen“), und vor einem Themenwechsel wird über einen Prüfwert erkannt, ob die Darstellung ungespeichert verändert wurde („Als Stil speichern …“ / „Verwerfen“ / „Abbrechen“). Issue: #100 ## Wie geprüft - `python scripts/run_tests.py sn_basis --baseline`: GRÜN 459/459, unverändert gegenüber Baseline (30 neue Tests in `tests/test_basemap_themen.py`) - `sn_plan41`: unverändert gegenüber Baseline. `sn_verfahrensgebiet`: 3 „NEU ROT“ und 8 „neu grün“ in `verfahrensgebiet_alkis_komplett`/`verfahrensgebiet_shape_komplett` – betrifft keinen geänderten Code, Baseline von Verfahrensgebiet ist gegenüber `unstable` verschoben - QGIS-Test (manuell, 05.10.2026, Daniel): die sechs Prüfschritte aus der Übergabenotiz durchgespielt, alles wie erwartet – Laden über `styleUrl` vollständig, Rückfrage bei vorhandenem Layer mit allen drei Wegen, Themenwechsel ohne Fehlalarm (Prüfwert stabil), Erkennung geänderter Darstellung samt „Als Stil speichern …“, Prüfwert nach Speichern und Neuladen des Projekts erhalten, Ziel-Layer bei zwei Basemap-Layern ## Änderungen an Verträgen - Neue öffentliche Funktionen `dialog_wrapper.ask_auswahl` und `qgisui_wrapper.get_active_layer` (nur Ergänzungen, keine bestehende Signatur geändert) - Neue Layer-Eigenschaften `sn_basemap_thema`, `sn_basemap_pruefwert`; Stilvorlagen-JSON mit Feld `thema` - Dokumentiert in `schnittstellen.md` Abschnitt 11 (Projektwissen-Branch `docs/100-basemap-themen`) ## Übergabenotiz **Stand:** fertig, QGIS-Test bestanden. Branch `feature/100-basemap-themen` (1 Commit), Doku auf `Projektwissen:docs/100-basemap-themen`. **Entscheidungen (mit Daniel am 05.10.2026 abgestimmt):** - Begriffe: *Thema* = Style-JSON des Dienstes, *Stil* = lokale Anpassung (Stilvorlage). Im Glossar eingetragen. - „Schon vorhanden“ = identische Kachel-URL (alle Themen teilen sie, daher themenunabhängig). - Themen nur Farbe und Grau; Relief bleibt vorerst weg (braucht Höhenlinien-Kacheln und WMS-Schummerung als weitere Quellen). - Das Thema-Dropdown wirkt auf den im Layerbaum ausgewählten Basemap-Layer, sonst auf den ersten. Laden/Speichern von Stilen und „Punktlinien korrigieren“ nutzen jetzt dieselbe Regel (bei nur einem Basemap-Layer wie bisher). - „Ersetzen“ legt keinen neuen Layer an, sondern lädt den vorhandenen im gewählten Thema neu (`setDataSource` + `loadDefaultStyle`): Layer-ID, Position im Layerbaum und Bezüge in Layouts/Kartenthemen bleiben. Ein selbst vergebener Layername bleibt, der automatische („basemap.de - Farbe“) wird angepasst. - Ungespeicherte Änderungen: SHA-256 der QML (Symbologie + Beschriftung, ohne QGIS-Version) als Layer-Eigenschaft nach Laden eines Themas/Stils und nach Speichern als Stil. Ohne gemerkten Prüfwert (ältere Layer) wird vorsichtshalber nachgefragt. **Im QGIS-Test geprüft (05.10.2026, alles wie erwartet):** 1. „Basemap hinzufügen“ ohne Basemap im Projekt: Layer erscheint ganz unten, Symbole und Beschriftung vollständig (Laden über `styleUrl` mit `loadDefaultStyle()`). 2. Zweites Mal klicken: Rückfrage nennt den Layer; „Zusätzlich laden“, „Ersetzen“, „Abbrechen“ durchspielen. 3. Thema auf „Grau“ und zurück: Darstellung wechselt, keine Rückfrage, solange nichts geändert wurde. **Wichtigster Punkt:** Wenn hier trotzdem „verändert“ gemeldet wird, ist die QML nicht stabil und der Prüfwert muss anders gebildet werden. 4. Hausnummern ausschalten, dann Thema wechseln: Rückfrage „verändert“; „Als Stil speichern …“ legt die Vorlage an (JSON mit `"thema"`), danach Wechsel. 5. Projekt speichern, neu öffnen, Thema wechseln: Prüfwert aus der Projektdatei wird erkannt (keine Rückfrage). 6. Zwei Basemap-Layer, einen davon im Layerbaum auswählen, Bereich auf- und zuklappen: Status und Dropdown zeigen den ausgewählten Layer. **Bekannte Grenze:** Das Dropdown aktualisiert sich nicht von selbst, wenn im Layerbaum ein anderer Layer ausgewählt wird (erst beim Aufklappen oder nach einer Aktion). Der Wechsel selbst trifft immer den aktuell ausgewählten Layer. Eine Anbindung an `iface.currentLayerChanged` wäre ein kleines Folge-Issue. **Prüfwert-Aufwand:** Jede Prüfung schreibt die rund 3,7 MB große QML einmal in eine temporäre Datei. **Folge-Issues:** #101 (Import/Export der Stile; das Feld `thema` ist schon vorbereitet), P10 Vektor (Entwurf liegt vor), Relief. ## Checkliste - [x] Nur Änderungen zum Issue (plus gleiche Ziel-Layer-Regel für die bestehenden Stil-Knöpfe, siehe oben) - [x] Keine direkten Qt/QGIS-Importe, keine Debug-`print` (nur die Fehlermeldung in `ask_auswahl` wie bei den Nachbarfunktionen) - [x] `changelog.txt` ergänzt - [x] Wissensbasis nachgezogen (schnittstellen, fallstricke, glossar, modulkarte, STATUS, Testkatalog) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Daniel added 1 commit 2026-10-05 19:44:26 +00:00
Neuer Abschnitt „Basemap-Layer“ im Basemap-Bereich des Druck-Tabs: Knopf
„Basemap hinzufügen“ und Auswahl „Thema“ (Farbe, Grau). Vorhandene Layer
werden an der Kachel-URL erkannt; Rückfrage Zusätzlich laden / Ersetzen /
Abbrechen. Vor dem Themenwechsel wird über einen Prüfwert der Darstellung
erkannt, ob sie ungespeichert verändert wurde.

Neues Modul modules/basemap_themen.py, neue Wrapper-Funktionen
ask_auswahl und get_active_layer, Stilvorlagen vermerken ihr Thema.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Daniel merged commit 1aadef73bd into unstable 2026-10-05 19:44:36 +00:00
Daniel deleted branch feature/100-basemap-themen 2026-10-05 19:44:36 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AG_QGIS/Plugin_SN_Basis#103