#1 Fri 04 June 2021 15:09
QGIS/Python: Rafraichir la legende du panneau layers
Bonjour à tous,
J'essaie de gérer le style d'un raster en python
Cela fonctionne comme je le souhaite pour le raster, néanmoins plusieurs soucis demeurent :
Sur la capture jointe, voila le résultat obtenu après le traitement python
Ma première question : comment faire que la légende du panneau layers (à gauche) soit mise à jour et corresponde à ce que j'ai dans le panneau style (à droite)
A noter qu'il suffit que j'aille dans ce panneau style, que je valide par Apply pour que ça soit répercuté dans le panneau layers ... évidement je cherche à le faire en Python
Ma deuxième question :
Sauriez vous comment faire en python pour obtenir le meme comportement que lorsqu'on va dans le panneau style / legend setting et qu'on décoche use continuous legend -> ce qui permet d'avoir les différents items de la rampe de couleur affiché avec leur label ?
Mon code actuel :
Code:
rlayer = QgsProject.instance().mapLayersByName('ma_couche')[0] extent = rlayer.extent() provider = rlayer.dataProvider() colDic={'1':'#fff5eb','2':'#7f2704'} fcn = QgsColorRampShader() fcn.setColorRampType(QgsColorRampShader.Interpolated) stats = provider.bandStatistics(1, QgsRasterBandStats.All, extent, 0) min = stats.minimumValue max = stats.maximumValue lst2 = [ QgsColorRampShader.ColorRampItem(min, QColor(colDic['1']), str(min)), QgsColorRampShader.ColorRampItem(max, QColor(colDic['2']), str(round(max)))] fcn.setColorRampItemList(lst2) shader = QgsRasterShader() shader.setRasterShaderFunction(fcn) renderer = QgsSingleBandPseudoColorRenderer(rlayer.dataProvider(), 1, shader) rlayer.setRenderer(renderer) rlayer.triggerRepaint() iface.layerTreeView().refreshLayerSymbology(rlayer.id())
Merci à tous
Hors ligne
#2 Fri 04 June 2021 15:15
Re: QGIS/Python: Rafraichir la legende du panneau layers
Je viens de voir que le soucis semble connu ici https://github.com/qgis/QGIS/issues/29536
Néanmoins de mon côté je suis sous QGIS 3.18, cela semblait résolu depuis ...
Hors ligne
#3 Fri 04 June 2021 15:28
Re: QGIS/Python: Rafraichir la legende du panneau layers
Et bien après test en version 3.12, cela semble parfaitement fonctionner ...
Si vous avez une solution pour la 3.18, ça m’intéresse tout de même
Hors ligne