[QGIS-it-user] Modificare la legenda di un layer categorizzato
Giulio Fattori
giulio.fattori a tin.it
Lun 20 Giu 2022 22:23:09 PDT
Il 19/06/2022 12:28, Andrea Giudiceandrea ha scritto:
> 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.
>>>
>
Ciao Andrea,
mi scuso del ritardo nel risponderti ma ero in ferie e per qualche
giorno niente pc.
La tua soluzione, come sempre, ha risolto efficacemente il problema e
Toto ne ha fatto un post.
https://github.com/Korto19/Edit-Legend-Text-Categorized
L'algoritmo ha ancora qualche problema con layer filtrati ma per ora non
ho avuto modo di capire come risolvere.
Grazie ancora e a presto
Giulio
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.osgeo.org/pipermail/qgis-it-user/attachments/20220621/f3610e49/attachment.htm>
Maggiori informazioni sulla lista
QGIS-it-user