Autobahn in der Basemap-Legende blau statt grau (#98) #108

Merged
Daniel merged 1 commits from bugfix/98-autobahn-legende into unstable 2026-10-06 05:51:00 +00:00
3 changed files with 46 additions and 2 deletions
+1
View File
@@ -1,3 +1,4 @@
- Bugfix: Die Autobahn erschien in der Basemap-Legende grau statt blau, sobald der Druckmaßstab außerhalb von Zoom 11–13 lag (also bei den üblichen großen Maßstäben). Der Legendenkatalog nannte nur die Styles der getrennten Fahrbahn, die ab Zoom 14 nicht mehr gelten; das Symbol bestand dann nur aus der grauen Kontur. Jetzt sind Kontur und Decker für alle Zoombereiche eingetragen (#98)
- Bugfix: War ein anderes Projekt-KBS als das des Verfahrensgebiets eingestellt (z. B. EPSG:3857 statt 25833), wurde das Drucklayout mit leerer Karte und falschen Koordinaten erstellt. Die Layoutkarte steht jetzt immer im KBS des Verfahrensgebiet-Layers (ohne Verfahrensgebiet im Projekt-KBS); alle Druckbereiche (Verfahrensgebiet, Auswahl, Rechteck, wie Kartenfenster) werden dorthin umgerechnet. Auch das gezeichnete Druckrechteck wird in das KBS seines Layers umgerechnet (#99)
- Neue allgemeine Funktionen `qgiscore_wrapper.transformiere_rechteck` (Rechteck zwischen zwei KBS umrechnen) und `qgisui_wrapper.zoom_auf_layer` (Kartenansicht auf einen Layer zoomen, mit Umrechnung ins KBS der Kartenansicht) (#99)
- Bugfix: Ein langer Tab (z. B. der Druck-Tab mit aufgeklapptem Basemap-Bereich) schob den unteren Rand des QGIS-Fensters über den Bildschirm hinaus, statt einen Scrollbalken zu zeigen. Jeder Tab der LNO-Docks liegt jetzt in einem Scroll-Bereich; das gilt auch für Fachplugins, die ihre Tabs selbst aufbauen (Plan41, Verfahrensgebiet), ohne dass sie geändert werden mussten (#104)
+4 -1
View File
@@ -304,7 +304,10 @@
],
"symbol_stile": [
"Kontur_Autobahn_getrennt",
"Decker_Autobahn_getrennt"
"Decker_Autobahn_getrennt",
"Kontur_Autobahn_getrennt_Fahrbahnachse",
"Decker_Autobahn_getrennt_Fahrbahnachse",
"Decker_Autobahn_getrennt_ohne_Tunnel_Bruecke"
]
},
{
+41 -1
View File
@@ -9,7 +9,7 @@ import unittest
from unittest.mock import patch
from sn_basis.modules import basemap_legende_layout as bll
from sn_basis.modules.basemap_legende import LegendenEintrag
from sn_basis.modules.basemap_legende import Katalog, LegendenEintrag, bilde_eintraege
def _wert(objekt, name):
@@ -108,6 +108,46 @@ class TestSymbolwahl(unittest.TestCase):
self.assertEqual(bll.waehle_symbolnamen(eintrag, aktive), ["Bruecke_Kreisstr_Decker"])
class TestAutobahnSymbol(unittest.TestCase):
"""Autobahn-Symbol aus dem ausgelieferten Katalog (Basis #98).
Zoombereiche und Renderer-Reihenfolge nach basemap.de ``bm_web_col`` Version 8: Die Styles
``*_Autobahn_getrennt`` gelten nur bis Zoom 13, ab Zoom 14 ``*_Autobahn_getrennt_Fahrbahnachse``,
unter Zoom 11 nur ``Decker_Autobahn_getrennt_ohne_Tunnel_Bruecke``.
"""
REIHENFOLGE = {
"Staumauer_Staudamm_Autobahn": 140, "Kontur_Autobahn_Abfahrt": 152, "Kontur_Autobahn_getrennt": 169,
"Kontur_Autobahn_getrennt_Fahrbahnachse": 170, "Decker_Autobahn_Abfahrt_einblenden": 177,
"Decker_Autobahn_Abfahrt": 183, "Decker_Autobahn_getrennt_ohne_Tunnel_Bruecke": 203,
"Decker_Autobahn_getrennt": 204, "Decker_Autobahn_getrennt_Fahrbahnachse": 205,
"Mittellinie_Autobahn": 206,
}
def _symbolnamen(self, aktiv: list[str]) -> list[str]:
katalog = Katalog.laden()
eintrag, = bilde_eintraege(aktiv, katalog)
return bll.waehle_symbolnamen(eintrag, {name: self.REIHENFOLGE[name] for name in aktiv})
def test_druckmassstab_ab_zoom_14_blauer_decker_auf_grauer_kontur(self):
"""Prüft, dass das Autobahn-Symbol ab Zoom 14 aus grauer Kontur und blauem Decker der Fahrbahnachse besteht statt nur aus einem grauen Style."""
aktiv = ["Staumauer_Staudamm_Autobahn", "Kontur_Autobahn_Abfahrt", "Kontur_Autobahn_getrennt_Fahrbahnachse",
"Decker_Autobahn_Abfahrt", "Decker_Autobahn_getrennt_Fahrbahnachse", "Mittellinie_Autobahn"]
self.assertEqual(self._symbolnamen(aktiv),
["Kontur_Autobahn_getrennt_Fahrbahnachse", "Decker_Autobahn_getrennt_Fahrbahnachse"])
def test_zoom_11_bis_13_bisherige_kontur_und_decker(self):
"""Prüft, dass das Autobahn-Symbol bei Zoom 11 bis 13 weiterhin aus Kontur und Decker der getrennten Fahrbahn besteht."""
aktiv = ["Staumauer_Staudamm_Autobahn", "Kontur_Autobahn_Abfahrt", "Kontur_Autobahn_getrennt",
"Decker_Autobahn_Abfahrt", "Decker_Autobahn_getrennt", "Mittellinie_Autobahn"]
self.assertEqual(self._symbolnamen(aktiv), ["Kontur_Autobahn_getrennt", "Decker_Autobahn_getrennt"])
def test_unter_zoom_11_blauer_decker(self):
"""Prüft, dass das Autobahn-Symbol unter Zoom 11 den blauen Decker der Übersichtsdarstellung nutzt."""
aktiv = ["Decker_Autobahn_Abfahrt_einblenden", "Decker_Autobahn_getrennt_ohne_Tunnel_Bruecke"]
self.assertEqual(self._symbolnamen(aktiv), ["Decker_Autobahn_getrennt_ohne_Tunnel_Bruecke"])
class _Symbol:
def __init__(self, typ): self._typ = typ
def type(self): return self._typ