Jak ustawić przezroczystość dla wielokąta w pliku kształtu w QGIS?

13

Jak ustawić przezroczystość dla wielokąta w pliku kształtu w QGIS?

Na przykład:

wielokąt z polem „wartość” = 1 powinien być w pełni przezroczysty, natomiast pole z polem „wartość” = 0,4 powinno mieć wartość przezroczystości 40%. Kolor wielokątów powinien zależeć od innego pola. Najlepiej zrobiłbym to przy użyciu jednej warstwy, ale użycie dwóch warstw z niektórymi trybami mieszania jest również OK.

RutgerH
źródło

Odpowiedzi:

17

W tym celu można użyć właściwości zdefiniowanych danych. Użyj karty stylu we właściwościach warstwy i kliknij przycisk wyrażenia po prawej stronie koloru.

Tam możesz użyć funkcji color_rgba( red, green, blue, alpha )do stworzenia koloru. Wszystkie wartości muszą zawierać się w przedziale od 0 do 255.

Przykład:

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

To da ci całkowicie czerwony styl z alfą zdefiniowaną z pola „przezroczystość” zgodnie ze specyfikacją w pytaniu.

W edytorze wyrażeń znajdziesz szereg innych funkcji związanych z kolorami, które mogą lepiej odpowiadać Twoim potrzebom, po prostu je przeglądaj i czytaj ich dokumentację bezpośrednio w edytorze wyrażeń.

Innym przykładem wartości nominalnych (jakościowych), które normalnie klasyfikowałbyś, jest praca w przestrzeni hsv:

Istnieje funkcja color_hsva( hue, saturation, value, alpha )tworzenia koloru. Wartości muszą być pomiędzy

  • odcień: 0-360 (czyli patrz poniżej)
  • wartość i nasycenie: 0-100
  • alfa: 0–255.

Przykład:

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

wprowadź opis zdjęcia tutaj

W przypadku QGIS> = 2.12 rozważ również odpowiedź @ndawsons.

Matthias Kuhn
źródło
Zobacz pokrewną odpowiedź poniżej dla QGIS> = 2.12
ndawson
12

W odpowiedzi na odpowiedź Matthiasa w QGIS> = 2.12 można użyć zdefiniowanego w kolorze koloru wypełnienia z wyrażeniem:

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

Wyrażenie to przyjmuje oryginalny kolor wielokąta (@ wartość) i zastępuje kanał alfa (nieprzezroczystość) wartością obliczoną z pola). Oznacza to, że możesz ustawić wyrażenie koloru wypełnienia, a następnie z przyjemnością korzystać z podzielonych na kategorie lub stopniowanych rendererów, aby automatycznie ustawić podstawowy kolor wypełnienia, a zasada nieprzezroczystości będzie nadal przestrzegana. Nie ma potrzeby twardego kodowania wartości rgb w ten sposób!

ndawson
źródło
1
Ładne i elastyczne podejście!
Matthias Kuhn
Wydaje się, że to nie działa w QGIS 3+. Po dodaniu tego wyrażenia wszystkie wielokąty przyjmują jeden kolor z tym samym kryciem.
robroc
3

Możesz również ustawić te wartości we właściwościach warstwy (kliknij prawym przyciskiem myszy -> Właściwości).
Użyj stylu -> Skategoryzowane, a następnie wybierz kolumnę, której chcesz użyć, na przykład „wartość”, wybierz kolory na rampie kolorów i kliknij „Klasyfikuj”.
Następnie możesz zdefiniować kolor każdej wartości i jej przezroczystość.

wprowadź opis zdjęcia tutaj

Jeśli dodasz nowe wartości do używanej warstwy, kliknij Clasify, aby dodać je do istniejącego stylu.

Jaskółka oknówka
źródło
1
Nie pozwoli to na użycie różnych pól dla przejrzystości i klasyfikacji, jak określono w pytaniu.
Matthias Kuhn