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

Der Legendenkatalog nannte für die Autobahn nur Kontur und Decker der
getrennten Fahrbahn, die basemap.de nur bis Zoom 13 zeichnet. Bei den
üblichen Druckmaßstäben (Zoom 14 und mehr) griff deshalb der Rückfall
auf den ersten getroffenen Style, die graue Kontur. Jetzt stehen die
Styles für alle Zoombereiche in symbol_stile; inaktive werden wie
bisher übergangen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-06 07:41:23 +02:00
co-authored by Claude Opus 5.5
parent f07522fbe8
commit 5aec62ad3f
3 changed files with 46 additions and 2 deletions
+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