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

GEODATA DAYS 2024

#1 Tue 01 July 2014 15:42

Titius
Participant actif
Date d'inscription: 27 Aug 2013
Messages: 69

QGIS 2.* : Commande python pour forcer le refresh des symboles svg

Bonjour,

Je suis actuellement en train de créer un plugins qgis. Le but de ce dernier est de plotter ce que l'on appelle des mécanismes au foyer (pour faire simple, c'est un petit symbole servant à savoir comment à bougé une faille lors d'un séisme).

Bref, le script se sert du code source d'un module python pour dessiner des symboles au format svg, dans un dossier spécifié, en se servant des attributs d'une couche vectorielle.
Ensuite, chaque point se voit attribuer un des symboles dessinés (chaque point a son propre symbole).

Le script fonctionne très bien, mais seulement la première fois.
Si par exemple je le relance pour changer la couleur des symboles, l'affichage reste bloqué sur les premiers symboles (alors que les nouveaux symboles ont bien étaient générés dans le dossier et les anciens effacés).

J'ai pourtant essayé les commandes suivantes, mais aucune ne semble faire le job (layer est ma couche vectorielle):

Code:

QgsMapRendererCache().clearCacheImage(layer.id())

et/ou

Code:

layer.dataProvider().reloadData()
            layer.triggerRepaint()

et/ou

Code:

if hasattr(layer, "setCacheImage"): layer.setCacheImage(None)
            layer.triggerRepaint()

Les seuls moyen de rafraîchir la symbologie sont de relancer Qgis, de créer les symboles dans un nouveau dossier, ce qui n'est pas une solution en soit puisqu'il semble que les anciens symboles restent de toute façon dans le cache de Qgis ou enfin de modifier dans les options de couche la taille du symboles.

Je remercie d'avance toute personne pouvant me donner une piste.

PS: je poste aussi le sujet sur forumsig et ferai remonter toutes solutions apporter ici.

Hors ligne

 

Pied de page des forums

Powered by FluxBB