Wie setze ich Transparenz pro Polygon in einem Shapefile in QGIS?

13

Wie setze ich Transparenz pro Polygon in einem Shapefile in QGIS?

Beispielsweise:

Ein Polygon mit dem Feld "Wert" = 1 sollte vollständig transparent sein, während ein Feld mit dem Feld "Wert" = 0,4 einen Transparenzwert von 40% aufweisen sollte. Die Farbe der Polygone sollte von einem anderen Feld abhängen. Am liebsten würde ich eine Ebene verwenden, aber zwei Ebenen mit einigen Mischmodi sind auch in Ordnung.

RutgerH
quelle

Antworten:

17

Hierfür können Sie datendefinierte Eigenschaften verwenden. Verwenden Sie die Registerkarte "Stil" in den Ebeneneigenschaften und klicken Sie auf die Schaltfläche "Ausdruck" rechts neben der Farbe.

Dort können Sie die Funktion verwenden color_rgba( red, green, blue, alpha ), um die Farbe zu erstellen. Alle Werte müssen zwischen 0 und 255 liegen.

Beispiel:

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

Auf diese Weise erhalten Sie einen vollständig roten Stil, wobei das Alpha aus einem Feld "Transparenz" gemäß Ihrer Spezifikation in der Frage definiert wird.

Im Ausdruckseditor finden Sie eine Reihe weiterer farbbezogener Funktionen, die möglicherweise besser Ihren Anforderungen entsprechen. Lernen Sie sie einfach kennen und lesen Sie ihre Dokumentation direkt im Ausdruckseditor.

Ein weiteres Beispiel für nominelle (qualitative) Werte, die Sie normalerweise klassifizieren würden, ist das Arbeiten im hsv-Bereich:

Es gibt die Funktion color_hsva( hue, saturation, value, alpha ), um die Farbe zu erstellen. Die Werte müssen zwischen liegen

  • Farbton: 0-360 (Bedeutung siehe unten)
  • Wert und Sättigung: 0-100
  • alpha: 0-255.

Beispiel:

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

Bildbeschreibung hier eingeben

Berücksichtigen Sie für QGIS> = 2.12 auch @ndawsons answer.

Matthias Kuhn
quelle
Siehe die entsprechende Antwort unten für QGIS> = 2.12
ndawson
11

Als Reaktion auf Matthias 'Antwort können Sie in QGIS> = 2.12 eine mit Daten definierte Füllfarbe mit dem Ausdruck verwenden:

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

Dieser Ausdruck übernimmt die ursprüngliche Polygonfarbe (@value) und ersetzt den Alphakanal (Opazität) durch den aus dem Feld berechneten Wert. Dies bedeutet, dass Sie den Füllfarbenausdruck festlegen und anschließend mit kategorisierten oder abgestuften Renderern die Basisfüllfarbe automatisch festlegen können. Die Opazitätsregel wird weiterhin eingehalten. Keine Notwendigkeit für die harte Codierung der RGB-Werte auf diese Weise!

ndawson
quelle
1
Schöner und flexibler Ansatz!
Matthias Kuhn
Dies scheint in QGIS 3+ nicht zu funktionieren. Nachdem ich diesen Ausdruck hinzugefügt habe, nehmen alle Polygone eine einzige Farbe mit derselben Deckkraft an.
Robroc
3

Sie können diese Werte auch in den Layereigenschaften des Layers einstellen (rechter Mausklick -> Eigenschaften).
Verwenden Sie Stil -> Kategorisiert, wählen Sie dann die Spalte aus, die Sie verwenden möchten, z. B. 'Wert', wählen Sie die Farben im Farbverlauf aus und klicken Sie auf 'Klassifizieren'.
Dann können Sie die Farbe jedes Werts und seine Transparenz definieren.

Bildbeschreibung hier eingeben

Wenn Sie der verwendeten Ebene neue Werte hinzufügen, klicken Sie auf Klassifizieren, um sie Ihrem vorhandenen Stil hinzuzufügen.

Martin
quelle
1
Dies erlaubt nicht die Verwendung unterschiedlicher Felder für die Transparenz und Klassifizierung, wie in der Frage angegeben.
Matthias Kuhn