Mehr

Nur ausgewählte Features aus einem Layer im QgsComposerLegend anzeigen?

Nur ausgewählte Features aus einem Layer im QgsComposerLegend anzeigen?


Ich habe ein benutzerdefiniertes qgis-Plugin entwickelt. Ich habe eine Schaltfläche zum Exportieren des Kartenbereichs in Form eines Bildes zusammen mit der Legende. Ich habe mir folgenden Code für die Legende ausgedacht:

legend = QgsComposerLegend(c) legend.model().setLayerSet(mapRenderer.layerSet()) c.addItem(legend)

Das Problem ist, dass alle Features in der Kartenlegende hinzugefügt werden, während ich nur die ausgewählten Features in die Kartenlegende aufnehmen möchte. Ich habe auch versucht:

legend.setLegendFilterByMapEnabled(True)

Aber das scheint nicht zu funktionieren. Irgendwelche Ideen zur Lösung dieses Problems?


Wenn ich das richtig verstanden habe, möchten Sie nur Layer einschließen, die die Ausdehnung des Kartenbereichs überschneiden. Dies ist ein Ausschnitt dafür:

import qgis.utils newcomp = iface.createNewComposer() c = newcomp.composition() canvas = qgis.utils.iface.mapCanvas() layer = qgis.utils.iface.legendInterface().layers() layerGroup = QgsLayerTreeGroup() for Ebene in Ebenen: if canvas.extent().intersects(layer.extent()): layerGroup.insertLayer(0, layer) legend = QgsComposerLegend(c) legend.modelV2().setRootGroup(layerGroup) c.addItem(legend)

Diese Lösung basiert auf Informationen, die aus dieser Frage und diesem abgeleitet werden.


Schau das Video: Labeling features