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: