Viac

Zobrazujú sa iba vybrané prvky z vrstvy v QgsComposerLegend?


Vyvinul som vlastný doplnok qgis. Mám tlačidlo na export mapového plátna vo forme obrázka spolu s legendou. Pre legendu som vymyslel nasledujúci kód:

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

Problém je v tom, že pridáva všetky prvky do legendy mapy, zatiaľ čo do legendy mapy chcem zahrnúť iba vybrané prvky. Tiež som skúsil:

legend.setLegendFilterByMapEnabled (True)

Zdá sa však, že to nefunguje. Máte nejaké nápady, ako vyriešiť tento problém?


Ak som správne pochopil, chcete zahrnúť iba vrstvy, ktoré pretínajú rozsah mapového plátna. Toto je úryvok:

import qgis.utils newcomp = iface.createNewComposer () c = newcomp.composition () canvas = qgis.utils.iface.mapCanvas () vrstvy = qgis.utils.iface.legendInterface (). layers () layerGroup = QgsLayerTreeGroup () pre vrstva vo vrstvách: if canvas.extent (). intersects (layer.extent ()): layerGroup.insertLayer (0, layer) legend = QgsComposerLegend (c) legend.modelV2 (). setRootGroup (layerGroup) c.addItem (legenda)

Toto riešenie je založené na informáciách odvodených z tejto a tejto otázky.


Pozri si video: STEREO HEART CHALLENGE. IBA NGA LANG MUSIC (Október 2021).