Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Tue 30 January 2018 23:00

jonathanD
Juste Inscrit !
Date d'inscription: 29 May 2013
Messages: 2

QGIS / PyQGIS: update/refresh composer legend

Bonjour,

Je cherche à modifier en python la source de donnée d'une couche raster puis mettre à jour mon composer et enfin l'enregistrer.
Pour modifier ma source de donnée j'ai trouvé ce qu'il faut ici :
https://geogear.wordpress.com/2015/05/1 … th-python/
Le problème est que je perds la symbologie de cette couche dans la légende de mon composer.

J'ai essayé différents codes mais aucun ne met à jour ma légende

Code:

iface.activeComposers()[0].composition().refreshItems()

for i in iface.activeComposers()[0].composition().items():
    if isinstance(i,QgsComposerLegend):
        legend = i
        legend.updateLegend()

La seule solution que j'ai trouvé pour le moment est d'utiliser la méthode "setAutoUpdateModel" sur ma légende et de passé à True/False la MAJ auto pour forcer la MAJ de la légende, mais cette solution n'est pas optimal!
=> Je voudrais pouvoir mettre à jour juste la symbologie pour une couche en particulier dans la légende de mon composer (un peu comme quand dans l'interface de mon composer je clique sur ma légende puis dans "propriété de l'objet" clique droit sur ma couche et "remettre à défaut").

Quelqu'un aurait-il une idée pour faire cela ? Je suis un peu bloqué !

Merci pour votre aide.

Hors ligne

 

#2 Thu 01 February 2018 17:56

jonathanD
Juste Inscrit !
Date d'inscription: 29 May 2013
Messages: 2

Re: QGIS / PyQGIS: update/refresh composer legend

J'ai trouvé une solution en me basant sur ce post

https://gis.stackexchange.com/questions … yqgis?rq=1

La voici : Je "copie/colle" le renderer

Code:

        for legendLyr in iface.mapCanvas().layers():
            renderer = legendLyr.renderer()
            myRenderer = renderer.clone()
            legendLyr.setRenderer(myRenderer)
            legendLyr.triggerRepaint()

Ce n'est peut être pas optimum, mais ça répond à mon besoin.

Hors ligne

 

#3 Fri 02 February 2018 10:25

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS / PyQGIS: update/refresh composer legend

merci pour le retour !


geodata au cerema et petits billets en géomatique

Hors ligne

 

Pied de page des forums

Powered by FluxBB