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:
@@ -894,6 +894,7 @@ QgsSymbolLayerUtils: Type[Any]
|
||||
QgsLayoutMeasurement: Type[Any]
|
||||
QgsLayoutUtils: Type[Any]
|
||||
QgsSimpleLineSymbolLayer: Type[Any]
|
||||
QgsLayoutExporter: Type[Any]
|
||||
SELECT_BEHAVIOR_SET: Any = None
|
||||
SELECT_RELATION_INTERSECT: Any = None
|
||||
PROPERTY_TYPE_EXPRESSION: Any = None
|
||||
@@ -923,6 +924,7 @@ try:
|
||||
QgsLayoutUtils as _QgsLayoutUtils,
|
||||
QgsSymbolLayer as _QgsSymbolLayer,
|
||||
QgsSimpleLineSymbolLayer as _QgsSimpleLineSymbolLayer,
|
||||
QgsLayoutExporter as _QgsLayoutExporter,
|
||||
Qgis as _QgisVT,
|
||||
)
|
||||
|
||||
@@ -943,6 +945,7 @@ try:
|
||||
QgsLayoutMeasurement = _QgsLayoutMeasurement
|
||||
QgsLayoutUtils = _QgsLayoutUtils
|
||||
QgsSimpleLineSymbolLayer = _QgsSimpleLineSymbolLayer
|
||||
QgsLayoutExporter = _QgsLayoutExporter
|
||||
|
||||
SELECT_BEHAVIOR_SET = _QgisVT.SelectBehavior.SetSelection
|
||||
SELECT_RELATION_INTERSECT = _QgisVT.SelectGeometryRelationship.Intersect
|
||||
@@ -1128,6 +1131,15 @@ except Exception:
|
||||
|
||||
QgsSimpleLineSymbolLayer = _MockQgsSimpleLineSymbolLayer
|
||||
|
||||
class _MockQgsLayoutExporter:
|
||||
def __init__(self, layout: Any = None):
|
||||
self._layout = layout
|
||||
|
||||
def renderRegionToImage(self, region: Any, size: Any = None, dpi: float = -1) -> Any:
|
||||
return None
|
||||
|
||||
QgsLayoutExporter = _MockQgsLayoutExporter
|
||||
|
||||
# QgsRectangle hatte im allgemeinen Mock-Block keinen Ersatz (nur Typannotation).
|
||||
if "QgsRectangle" not in globals():
|
||||
class _MockQgsRectangle:
|
||||
|
||||
Reference in New Issue
Block a user