Comment définir la transparence par polygone dans un fichier de formes dans QGIS?

13

Comment définir la transparence par polygone dans un fichier de formes dans QGIS?

Par exemple:

un polygone avec le champ "valeur" = 1 doit être entièrement transparent tandis que le champ avec le champ "valeur" = 0,4 doit avoir une valeur de transparence de 40%. La couleur des polygones doit dépendre d'un autre champ. De préférence, je le ferais en utilisant un seul calque, mais en utilisant deux calques avec certains modes de fusion est également OK.

RutgerH
la source

Réponses:

17

Vous pouvez utiliser des propriétés définies par les données pour cela. Utilisez l'onglet style sur les propriétés du calque et cliquez sur le bouton d'expression à droite de la couleur.

Là, vous pouvez utiliser la fonction color_rgba( red, green, blue, alpha )pour créer la couleur. Toutes les valeurs doivent être comprises entre 0 et 255.

Exemple:

color_rgba( 255, 0, 0, ( 1 - "transparency" ) * 255 )

Cela vous donnera un style totalement rouge avec l'alpha défini à partir d'un champ "transparence" selon vos spécifications dans la question.

Dans l'éditeur d'expression, vous trouverez un certain nombre d'autres fonctions liées aux couleurs qui peuvent mieux répondre à vos besoins, il suffit de les explorer et de lire leur documentation directement dans l'éditeur d'expression.

Un autre exemple de valeurs nominales (qualitatives) que vous classeriez normalement est de travailler dans l'espace hsv:

Il y a la fonction color_hsva( hue, saturation, value, alpha )pour créer la couleur. Les valeurs doivent être comprises entre

  • teinte: 0-360 (ce qui signifie voir ci-dessous)
  • valeur et saturation: 0-100
  • alpha: 0-255.

Exemple:

color_hsva( 
  CASE 
    WHEN "classification" = 'red' THEN 0
    WHEN "classification" = 'blue' THEN 240
  END CASE, -- hue
  80,  -- saturation
  80,  -- value
  ( 1 - "transparency" ) * 255  -- alpha
)

entrez la description de l'image ici

Pour QGIS> = 2.12, considérez également la réponse @ndawsons.

Matthias Kuhn
la source
Voir la réponse connexe ci-dessous pour QGIS> = 2.12
ndawson
11

Pour faire suite à la réponse de Matthias, dans QGIS> = 2.12, vous pouvez utiliser une couleur de remplissage définie par les données avec l'expression:

 set_color_part(@value, 'alpha', ( 1 - "transparency" ) * 255 )

Cette expression utilise la couleur du polygone d'origine (@value) et remplace le canal alpha (opacité) par la valeur calculée à partir du champ). Cela signifie que vous pouvez définir l'expression de la couleur de remplissage, puis continuer avec plaisir et utiliser des rendus classés ou gradués pour définir automatiquement la couleur de remplissage de base et la règle d'opacité sera toujours respectée. Pas besoin de coder en dur les valeurs RVB de cette façon!

ndawson
la source
1
Approche agréable et flexible!
Matthias Kuhn
Cela ne semble pas fonctionner dans QGIS 3+. Après avoir ajouté cette expression, tous les polygones prennent une seule couleur avec la même opacité.
robroc
3

Vous pouvez également définir ces valeurs dans les propriétés du calque du calque (clic droit -> Propriétés).
Utilisez Style -> Catégorisé puis sélectionnez la colonne que vous souhaitez utiliser, par exemple «valeur», choisissez les couleurs dans la palette de couleurs et cliquez sur «Clasifier».
Ensuite, vous pouvez définir la couleur de chaque valeur et sa transparence.

entrez la description de l'image ici

Si vous ajoutez de nouvelles valeurs au calque utilisé, cliquez sur Clasify pour les ajouter à votre style existant.

Martin
la source
1
Cela ne permettra pas d'utiliser différents champs pour la transparence et la classification comme spécifié dans la question.
Matthias Kuhn