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