[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