Kolor etykiety można zróżnicować na kilka sposobów. W zależności od tego, jaki efekt chcemy osiągnąć, można zastosować: wyrażenie warunkowe CASE, zmienną @symbol_color bądź użyć nadpisywania opartego na danych (z tabeli atrybutów).
# 1. Przy użyciu wyrażenia warunkowego CASE
Musimy wiedzieć jakich chcemy użyć kolorów i znać ich kody RGB (lub inne, np. taki poprzedzony #, który możemy skopiować z okna wyboru kolorów).
W poniższym przykładzie wykorzystałam dane z OpenStreetMap zawierające POI (odfiltrowałam trzy kategorie obiektów: bar, cafe i restaurant).
Wyrażenie warunkowe CASE ma następującą składnię:
CASE
WHEN „TYP” = 'bar’ THEN color_rgb(0,176,80)
WHEN „TYP” = 'cafe’ THEN color_rgb(255,255,0)
WHEN „TYP” = 'restaurant’ THEN color_rgb(255,192,0)
END
Powyżej zakodowałam losowe kolory, ale oczywiście można je odpowiednio dobrać 🙂 Formułę taką wpisujemy w oknie wyrażeń, do którego dojdziemy wybierając opcję nadpisywania opartego na danych dla koloru tekstu etykiety:
# 2. Gdy chcemy mieć tekst dokładnie w tym samym kolorze co obiekt, który opisuje.
Otwieramy dokładnie to samo okno wyrażeń dla koloru etykiety. Zamiast „ręcznego” doboru kolorów, wskazujemy (za pomocą zmiennej @symbol_color), że kolor ma być pobierany z danego obiektu.
Uzyskany efekt jest następujący:
# 3. Jeśli chcemy zakodować kolory dla różnych obiektów niezależnie od innych parametrów
Tworzymy nowe pole tekstowe w tabeli atrybutów (nazwałam je kolor) i wpisujemy tam zakodowane kolory dla poszczególnych obiektów. Wskazujemy, aby ta kolumna nadpisywała kolor domyślny.
Na zrzucie ekranu poniżej widać trzy sposoby zakodowania koloru. Widać też, że wszystkie działają. Wszędzie tam, gdzie pole kolor nie ma wpisanej wartości – program pozostawia domyślny kolor etykiety, czyli czarny:
