Kartenrand überlappungsfrei anordnen (#93)

Im Standardlayout hingen Hauptlegende (oben), Quellenangabe und Kartenschild (unten) an der
Kartenhöhe; bei kleinen Verfahren waren sie zusammen höher als die Karte und überlappten.
Neues Modul print_kartenrand: Nach dem Aufbau der Vorlage (inkl. Basemap-Legende) werden die
Legenden einmal gezeichnet – die Hauptlegende filtert nach Karteninhalt, ihre Höhe steht erst
danach fest – und für 1–3 Spalten vermessen. Gewählt wird die kleinste passende Spaltenzahl
(Kartenrand wird dafür breiter); passt keine, die mit dem geringsten Platzbedarf, und die Seite
wird höher, Quellenangabe und Kartenschild rutschen nach unten. Karte bleibt in Größe und Lage.
Fehler bei der Anordnung verhindern die Vorlage nicht (Warnung). Wrapper: QgsLayoutExporter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-02 13:06:35 +02:00
co-authored by Claude Opus 5.5
parent 90c4e4d155
commit 006459ab61
5 changed files with 403 additions and 0 deletions
+16
View File
@@ -1086,11 +1086,27 @@ class PrintLayout:
if basemap_legende:
self._erzeuge_basemap_legende(layout)
self._ordne_kartenrand_an(layout)
layout_manager.addLayout(layout)
self._current_layout = None
open_layout_designer(layout)
return layout
def _ordne_kartenrand_an(self, layout: Any) -> None:
"""Ordnet Legenden, Quellenangabe und Kartenschild überlappungsfrei an (Basis #93).
Rand ggf. breiter (bis zu drei Legendenspalten) und Seite ggf. höher; die Karte bleibt.
Ein Fehler dabei darf das Anlegen der Vorlage nicht verhindern; er wird als Warnung gemeldet.
"""
from sn_basis.functions.message_wrapper import warning
from sn_basis.modules.print_kartenrand import ordne_kartenrand_an
try:
ordne_kartenrand_an(layout)
except Exception as fehler:
warning("Vorlage anlegen", f"Der Kartenrand konnte nicht angeordnet werden: {fehler}")
def _erzeuge_basemap_legende(self, layout: Any) -> None:
"""Kennzeichnet das Layout und erzeugt die Basemap-Legende (Basis #88).