Basemap: Punktlinien (Baumreihe, Hecke, Durchlass …) werden in Karte und Legende nicht gezeichnet #90

Closed
opened 2026-10-02 10:29:59 +00:00 by Daniel · 0 comments
Member

Ziel

Baumreihen, Hecken, Durchlässe und die übrigen punktierten Basemap-Objekte erscheinen in der Karte und in der Basemap-Legende als Punktlinie, nachdem der Nutzer im Basemap-Bereich des Druck-Tabs „Punktlinien korrigieren“ gewählt hat.

Betroffen

Plugin: sn_basis
Module/Dateien (falls bekannt): modules/basemap_legende_layout.py oder neues kleines Modul für die Stilkorrektur, ui/widgets/basemap_bereich.py (Knopf), ggf. functions/qgiscore_wrapper.py
Berührt Schnittstellen (docs/architektur/schnittstellen.md)? nein (verändert nur die Darstellung des Basemap-Layers im Projekt; ggf. neue öffentliche Funktion in basemap_* dokumentieren)

Fachlicher Hintergrund

Gefunden bei #88. basemap.de zeichnet Punktlinien wie in MapLibre üblich: Strichmuster mit Strichlänge 0 und runder Linienkappe (line-dasharray: [0, 2], line-cap: round). QGIS übernimmt das beim Import der Style-JSON 1:1 als eigenes Strichmuster 0;…. Qt zeichnet Striche der Länge 0 nicht – auch nicht als Punkt. Die Objekte fehlen dadurch in der Karte und in der Legende.

Nachgewiesen in QGIS 3.44.4 / PyQt 5.15 (offscreen, echte Kacheln, Testgebiet bei Meißen, nur die betroffenen Styles eingeschaltet, Beschriftung aus):

Test sichtbare Pixel
reines Qt, RoundCap, Muster [0, 3] 0
Kartenrendering Original, 1:5000 / 1:10 000 0 / 0
Kartenrendering mit Strichlänge 0,01 statt 0 Punkte sichtbar

Betroffene Styles (12): VegetationsL_Baumreihe, VegetationsL_Baumreihe_Fuellung, VegetationsL_Hecke, Gewaesser_L_Durchlass_Dueker, BauwerkL_Wellenbrecher_Buhne_Lahnung, BauwerkF_Wellenbrecher_Buhne_Lahnung, VerkehrsL_SeilbahnSchwebebahn_Punkte, VerkehrsL_Materialseilbahn_Punkte, VerkehrsL_Sessellift_Enden, VerkehrsL_Ski_Schlepplift_Enden, HistorischL_Wasserleitung_Punkte, VersorgungsL_Transportanlage_Foerderband_Rohrleitung_Kreise.

Lösungsansatz (im Spike bestätigt): In jedem Renderer-Style des Basemap-Layers, dessen einfache Linie ein eigenes Strichmuster hat, Strichlängen 0 durch einen kleinen Wert (0,01) ersetzen – im festen Muster (customDashVector) und im zoomabhängigen Ausdruck der Eigenschaft „customDash“ (array(0, → array(0.01,). Die Korrektur nur in der Legende vorzunehmen wäre irreführend (Legende zeigt Punkte, Karte nicht) und ist deshalb verworfen.

Ausgelöst wird die Korrektur bewusst per Knopf im Basemap-Bereich, nicht automatisch. Danach lässt sie sich mit „Speichern unter …“ als Stilvorlage sichern und in anderen Projekten wieder laden.

Abnahmekriterien

  • Knopf „Punktlinien korrigieren“ im Basemap-Bereich; ohne Basemap-Layer deaktiviert bzw. mit Hinweis.
  • Nach dem Klick sind alle Styles mit Strichlänge 0 korrigiert (festes Muster und Ausdruck); andere Styles bleiben unverändert. Meldung mit der Anzahl korrigierter Styles.
  • Mehrfaches Ausführen ist unschädlich (zweiter Lauf korrigiert 0 Styles).
  • Baumreihe und Durchlass erscheinen danach in der Karte und – nach „Basemap-Legende aktualisieren“ – mit sichtbarem Symbol in der Basemap-Legende.
  • Eine danach gespeicherte Stilvorlage enthält die Korrektur.
  • Mock-Test vorhanden (Korrektur von Muster und Ausdruck, Idempotenz, unbeteiligte Styles unverändert), run_tests.py --baseline ohne NEU ROT.
  • QGIS-Test: nötig – Karte und Legende in QGIS 3.44; QGIS 4 (Qt6) prüfen, ob das Problem dort auch besteht.

Nicht Teil dieses Issues

  • Automatische Korrektur beim Laden des Layers oder beim Erstellen der Vorlage.
  • Andere Darstellungsprobleme der Basemap-Legende (z. B. weiße Fläche „Platz“ ohne Rand).
  • Fehlerbericht an QGIS (der Mapbox-Style-Konverter sollte Strichlänge 0 selbst abfangen) – separat, von Hand.
  • Änderungen am Legendenkatalog.
## Ziel Baumreihen, Hecken, Durchlässe und die übrigen punktierten Basemap-Objekte erscheinen in der Karte und in der Basemap-Legende als Punktlinie, nachdem der Nutzer im Basemap-Bereich des Druck-Tabs „Punktlinien korrigieren“ gewählt hat. ## Betroffen Plugin: sn_basis Module/Dateien (falls bekannt): `modules/basemap_legende_layout.py` oder neues kleines Modul für die Stilkorrektur, `ui/widgets/basemap_bereich.py` (Knopf), ggf. `functions/qgiscore_wrapper.py` Berührt Schnittstellen (`docs/architektur/schnittstellen.md`)? nein (verändert nur die Darstellung des Basemap-Layers im Projekt; ggf. neue öffentliche Funktion in `basemap_*` dokumentieren) ## Fachlicher Hintergrund Gefunden bei #88. basemap.de zeichnet Punktlinien wie in MapLibre üblich: Strichmuster mit **Strichlänge 0** und runder Linienkappe (`line-dasharray: [0, 2]`, `line-cap: round`). QGIS übernimmt das beim Import der Style-JSON 1:1 als eigenes Strichmuster `0;…`. **Qt zeichnet Striche der Länge 0 nicht** – auch nicht als Punkt. Die Objekte fehlen dadurch in der Karte *und* in der Legende. Nachgewiesen in QGIS 3.44.4 / PyQt 5.15 (offscreen, echte Kacheln, Testgebiet bei Meißen, nur die betroffenen Styles eingeschaltet, Beschriftung aus): | Test | sichtbare Pixel | |---|---| | reines Qt, `RoundCap`, Muster `[0, 3]` | 0 | | Kartenrendering Original, 1:5000 / 1:10 000 | 0 / 0 | | Kartenrendering mit Strichlänge 0,01 statt 0 | Punkte sichtbar | Betroffene Styles (12): `VegetationsL_Baumreihe`, `VegetationsL_Baumreihe_Fuellung`, `VegetationsL_Hecke`, `Gewaesser_L_Durchlass_Dueker`, `BauwerkL_Wellenbrecher_Buhne_Lahnung`, `BauwerkF_Wellenbrecher_Buhne_Lahnung`, `VerkehrsL_SeilbahnSchwebebahn_Punkte`, `VerkehrsL_Materialseilbahn_Punkte`, `VerkehrsL_Sessellift_Enden`, `VerkehrsL_Ski_Schlepplift_Enden`, `HistorischL_Wasserleitung_Punkte`, `VersorgungsL_Transportanlage_Foerderband_Rohrleitung_Kreise`. Lösungsansatz (im Spike bestätigt): In jedem Renderer-Style des Basemap-Layers, dessen einfache Linie ein eigenes Strichmuster hat, Strichlängen 0 durch einen kleinen Wert (0,01) ersetzen – im festen Muster (`customDashVector`) **und** im zoomabhängigen Ausdruck der Eigenschaft „customDash“ (`array(0,` → `array(0.01,`). Die Korrektur nur in der Legende vorzunehmen wäre irreführend (Legende zeigt Punkte, Karte nicht) und ist deshalb verworfen. Ausgelöst wird die Korrektur bewusst per Knopf im Basemap-Bereich, nicht automatisch. Danach lässt sie sich mit „Speichern unter …“ als Stilvorlage sichern und in anderen Projekten wieder laden. ## Abnahmekriterien - [ ] Knopf „Punktlinien korrigieren“ im Basemap-Bereich; ohne Basemap-Layer deaktiviert bzw. mit Hinweis. - [ ] Nach dem Klick sind alle Styles mit Strichlänge 0 korrigiert (festes Muster und Ausdruck); andere Styles bleiben unverändert. Meldung mit der Anzahl korrigierter Styles. - [ ] Mehrfaches Ausführen ist unschädlich (zweiter Lauf korrigiert 0 Styles). - [ ] Baumreihe und Durchlass erscheinen danach in der Karte und – nach „Basemap-Legende aktualisieren“ – mit sichtbarem Symbol in der Basemap-Legende. - [ ] Eine danach gespeicherte Stilvorlage enthält die Korrektur. - [ ] Mock-Test vorhanden (Korrektur von Muster und Ausdruck, Idempotenz, unbeteiligte Styles unverändert), `run_tests.py --baseline` ohne NEU ROT. - [ ] QGIS-Test: nötig – Karte und Legende in QGIS 3.44; QGIS 4 (Qt6) prüfen, ob das Problem dort auch besteht. ## Nicht Teil dieses Issues - Automatische Korrektur beim Laden des Layers oder beim Erstellen der Vorlage. - Andere Darstellungsprobleme der Basemap-Legende (z. B. weiße Fläche „Platz“ ohne Rand). - Fehlerbericht an QGIS (der Mapbox-Style-Konverter sollte Strichlänge 0 selbst abfangen) – separat, von Hand. - Änderungen am Legendenkatalog.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AG_QGIS/Plugin_SN_Basis#90