[QGIS-it-user] Operazioni con codici colore
Andrea Giudiceandrea
andreaerdna a libero.it
Gio 1 Lug 2021 01:54:12 PDT
Ciao Massimo,
purtroppo continua a non essermi chiaro cosa intendi con "tabella
attributi con 2 variabili, con 3 valori di RGB". Una tabella attributi
ha campi (o colonne).
Comunque, se il tuo layer contiene due campi, VAR1 e VAR2 di tipo
stringa e ognuno contiene una singola stringa contenente una tripletta
di valori decimali delle componenti colore separati da virgola
(rappresentante un singolo colore), allora potresti usare una
espressione come:
array_to_string( array_foreach( generate_series( 0, 2 ), round(
array_get( string_to_array( VAR1 ), @element ) * array_get(
string_to_array( VAR2 ), @element ) / 255 ) ) )
che crea una stringa contenente una tripletta di valori decimali delle
componenti colore separati da virgola, in cui i valori sono calcolati
moltiplicando il valore di ogni componente colore della stringa nel
campo VAR1, con il valore della rispettiva componente colore della
stringa nel campo VAR2 e dividendo il risultato per 255.
In questo modo dovresti ottenere un colore che è il "prodotto" (Blending
mode: Multiply) dei colori in VAR1 e VAR2 (secondo
https://en.wikipedia.org/wiki/Blend_modes#Multiply_and_Screen)
Chiaramente puoi adattare l'espressione anche ad altre modalità di
blending, se conosci la funzione che lega i valori dei colori in input
ai valori del colore in output.
Un altra possibilità, più elegante, è quella di scrivere una piccola
funzione in Python che svolge lo stesso compito della precedente
espressione e poi usare tale funzione al posto dell'espressione nel
calcolatore di campi.
A presto.
Andrea
Il 01/07/2021 08:54, Massimo Figaroli ha scritto:
>
> Grazie Andrea.
> Faccio un esempio pratico
> Ho uno shapefile poligonale con n feature e una tabella attributi con
> 2 variabili, con 3 valori di RGB.
> VAR1: '243,243,243' ; '234,197,221' ; '230,163,208'
> VAR2: '243,243,243' ; '194,241,213' ; '139,226,174'
>
> Duplicando la geometria e dando rappresentazione per le due variabili,
> impostando per il vettore che si sovrappone la modalità di fusione
> "moltiplica", ottengo una rappresentazione ben riassumibile con una
> legenda bivariata.
>
> La legenda posso costruirla direttamente nel compositore di stampa o
> più agevolmente con GIMP (ad es.), andando di fatto ad sovrapporre le
> due scale colore.
>
> Se però potessi combinare direttamente ad es il valore di VAR1
> '243,243,243' con il valore di VAR2 '139,226,174' mediante il
> calcolatore di campi, avrei la possibilità di ottenere la stessa
> elaborazione senza duplicare il layer.
> Inoltre poi avrei quantomeno una simbologia "reale" nel mio progetto e
> non solo come elemento grafico nel layout.
>
Maggiori informazioni sulla lista
QGIS-it-user