Buongiorno,

Ho realizzato questo script da console per modificare la legenda di un layer categorizzato.

Ha bisogno del campo di tematizzazione, di un altro campo da cui trarre la nuova legenda e opzionalmente un altro testo.

Funziona perfettamente ma solo una volta dopo la quale se rilanciato manda QGIS in crash.

Esiste una soluzione ?

Grazie
lyr = iface.activeLayer()

#inserire campo attuale classificazione: "SIGLA"
field = "SIGLA"

#recupero le nuove etichette legenda da: "nomePDF"
new_label =[]
for feature in lyr.getFeatures():
    new_label.append(feature["nomePDF"])
#tutti gli altri valori
new_label.append('')
print(new_label)

#eventuale stringa aggiuntiva
alt_value = ''

#creo un nuovo vettore per le nuove etichette
new_categories = []

#recupero le categorie esistenti
categories = lyr.renderer().categories()

new_renderer = QgsCategorizedSymbolRenderer()
    
#ciclo sulle categorie
for i, category in enumerate(categories):
    #recupero il simbolo esistente
    new_sym = category.symbol()
    #creo la nuova categoria senza cambiare simbolo ma modificando etichetta
    #print(category.value(), new_sym, str(new_label[i]) + alt_value)
    #aggiungo la categoria alla lista
    new_categories.append(QgsRendererCategory(category.value(), new_sym, 
str(new_label[i])+alt_value))

#applico la tematizzazione
new_renderer = QgsCategorizedSymbolRenderer(field, new_categories)

lyr.setRenderer(new_renderer)
lyr.triggerRepaint()
_______________________________________________
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Rispondere a