[QGIS-it-user] Modificare la legenda di un layer categorizzato

Andrea Giudiceandrea andreaerdna a libero.it
Dom 19 Giu 2022 03:28:30 PDT


Ciao Giulio,
sei riuscito a risolvere il problema apportando le modifiche suggerite?

A presto.

Andrea

Il 14/06/2022 17:31, Andrea Giudiceandrea ha scritto:
> Ciao Giulio,
> prima di tutto la riga 23 (new_renderer = 
> QgsCategorizedSymbolRenderer()) mi pare sia superflua. Comunque il 
> problema non dipende da questo.
>
> A mio avviso il problema è dovuto al fatto che quando, nel ciclo for, 
> assegni la simbologia di una categoria alla variabile new_sym (new_sym 
> = category.symbol()), l'ownership di tale oggetto non viene 
> trasferito, mentre nella creazione di un nuovo oggetto 
> QgsRendererCategory(category.value(), new_sym, 
> str(new_label[i])+alt_value) l'ownership della simbologia deve essere 
> trasferito alla categoria (come indicato nella documentazione della 
> classe QgsRendererCategory [1]).
>
> Questo tentativo di trasferire ad un oggetto l'ownership che non si 
> possiede di un altro oggetto creare il crash quando si tenta di 
> accedere nuovamente all'oggetto.
>
> Per ovviare a tale problema bisogna creare un clone ("deep copy") del 
> simbolo in modo da possederne l'ownership affinché possa essere 
> trasferito correttamente all'oggetto QgsRendererCategory.
>
> Quindi penso che il problema possa essere risolto modificando il 
> codice in uno dei seguenti due modi:
>
> ...
> for i, category in enumerate(categories):
>      new_sym = category.symbol()
>      new_categories.append(QgsRendererCategory(category.value(), 
> new_sym.clone(), str(new_label[i])+alt_value))
> ...
>
> ...
> for i, category in enumerate(categories):
>      new_sym = category.symbol().clone()
>      new_categories.append(QgsRendererCategory(category.value(), 
> new_sym, str(new_label[i])+alt_value))
> ...
>
>
> A presto.
>
> Andrea
>
>
> Il 14/06/2022 13:23, Giulio Fattori ha scritto:
>>
>> Buongiorno,
>>
>> Ho realizzato questo script da console per modificare la legenda di 
>> un layer categorizzato.
>>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.osgeo.org/pipermail/qgis-it-user/attachments/20220619/41fa7c83/attachment.htm>


Maggiori informazioni sulla lista QGIS-it-user