Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Etykiety "podwarstwy"
04-07-2018, 07:36,
#1
Etykiety "podwarstwy"
Witam
Mam taką sytuację jak w załączniku. Jest główna warstwa usługi _LS w tej warstwie mam stworzone "podwarstwy" -brak usługi; - aktywna usługa; - TV; - tel. kom.; - Internet. Czy jest możliwość wykonania etykiety "podwarstwy"? Chodzi o to żeby przy tych trójkątach na mapie wyświetlała się dana etykieta z legendy. W tabeli atrybutów mam kolumnę usługa 1, usługa 2 itd i w komórkach dana nazwa usługi.
Zależy mi na tym żeby to działało w jednej wspólnej warstwie, ponieważ będzie to obsługiwane na serwerze przez kilka osób i będą mieli dostęp tylko do tabeli atrybutów. Jedzie osoba do klienta, podpisuje umowę i w tablecie zaznacza na jaką usługę podpisał umowę. To tak w skrócie ;-)


Załączone pliki Miniatury
   
04-07-2018, 09:24,
#2
RE: Etykiety "podwarstwy"
O ile dobrze rozumiem chcesz dodatkowe etykiety z innych kolumn.
Możesz to zrobić na dwa sposoby:
1) Składasz etykiety z kilku atrybutów i używasz zawijania wierszy (było o tym ostatnio an forum)
Z tego co pamiętam to kiedyś był problem, że gdy w takim złączeniu pojawiał się null'owy atrybut to cała etykieta się nie wyświetlała.
Używało się chyba funkcji case when aby to obejść.
2)Możesz to zrobić przy pomocy etykietowania opartego na regułach.
Dodajesz kolejne etykiety bazujące na regułach, bez dodawania samych warunków.
Dla każdej etykiety musisz ustawić przesunięcie, tak, żeby się nie pokrywały.
04-07-2018, 10:43,
#3
RE: Etykiety "podwarstwy"
Rozumiem, że warstwa "uslugi_LS" posiada atrybut, który z kolei opisuje rodzaj usługi dla danego obiektu.
Taki zapis powoduje, że obiektowi przypisujemy tylko jedną wartość tego atrybutu - albo 'TV', albo 'tel. kom.', albo 'internet'
Żeby działało tak jak chcesz, trzeba dopisać atrybuty i wtedy je tylko "odhaczać" - np. 'jest'.
Kiedy atrybutów będzie więcej, możesz wykorzystać rozwiązanie, które zaproponował xmaziax.
Mam nadzieję, że nie namieszałem za bardzo Wink
04-07-2018, 12:14,
#4
RE: Etykiety "podwarstwy"
Wszystko jasne ;-) ok pokombinowałem troszkę i dzięki Waszej pomocy osiągnąłem taki efekt jak w załącznikach


Załączone pliki Miniatury
           
04-07-2018, 12:17,
#5
RE: Etykiety "podwarstwy"
jeszcze próbuję dodać aby w wyświetlaniu na mapie jeżeli mam TV to żeby obok wyświetliło mi tekst z kolumny TV_PAKIET i ewentualnie jeśli będzie TV_PAKIET+ i identycznie z Internetem jeśli będzie wyświetlał Internet to żeby obok był tekst z kolumny PR_INTERNE
04-07-2018, 12:24,
#6
RE: Etykiety "podwarstwy"
Bardzo dobry efekt Smile
Powodzenia
04-07-2018, 12:26,
#7
RE: Etykiety "podwarstwy"
no jeszcze kombinuje z wyświetlaniem przy TV jaki pakiet i przy Internecie jaka prędkość
04-07-2018, 13:46,
#8
RE: Etykiety "podwarstwy"
hejka coś ktoś podpowie? Bo nie wychodzi ;-) coś źle robię ale nie wiem co. Dałem do etykiet wyświetlania taki kod:
"usluga_4"='Internet' or "usluga_4"='TV' or "usluga_4"='multiroom' or "usluga_4"='tel. komórkowy' or "usluga_4"='tel. stacjonarny' or "usluga_4"='LTE'
i teraz pytanie: co dopisać żeby: gdy wybiorę z kolumny "usluga_4 =TV to wyświetli mi informacje z innej kolumny, ale jeśli nie będzie w "usluga_4 tv" to nic nie wyświetli i analogicznie dla internetu
04-07-2018, 19:48,
#9
RE: Etykiety "podwarstwy"
Sprawdź case when
05-07-2018, 08:22,
#10
RE: Etykiety "podwarstwy"
kurcze stwierdzam, że jestem kompletnie zielony w qgisie chodzi o ten kod ;-). W tej chwili mam w etykietowaniu taki kod "usluga_1"='Internet' or "usluga_1"='TV' or "usluga_1"='multiroom' or "usluga_1"='tel. komórkowy' or "usluga_1"='tel. stacjonarny' or "usluga_1"='LTE' i wyświetla to co potrzebuję, ale gdybym chciał żeby wyświetlało mi, że przy wyborze TV obok jaki to pakiet to muszę postawić warunek i teraz jest problem bo coś źle wpisuję a nie wiem gdzie :-( nie znam się na programowaniu niestety. Robię coś takiego:
"usluga_1"='Internet' or "usluga_1"='TV' or "usluga_1"='multiroom' or "usluga_1"='tel. komórkowy' or "usluga_1"='tel. stacjonarny' or "usluga_1"='LTE' if( "usluga_1"='TV') CASE WHEN "TV_PAKIET"='Pakiet Platynowy HD' or "TV_PAKIET"='Pakiet Start HD' or "TV_PAKIET"='Pakiet Złoty HD' or "TV_PAK_DOD"='Pakiet Canal+ Select' or "TV_PAK_DOD"='Pakiet Canal+ Prestige' THEN result END ale zwraca mi taki błąd:

Błąd sprawdzania:
syntax error, unexpected FUNCTION, expecting $end

Błąd przetwarzania:
Brak głównego węzła! Parsowanie nie powiodło się?

oczywiście zaznaczone mam etykietuj z: usliuga_1 || TV_PAKIET || TV_PAK_DOD
Zaznaczam, że nie znam się na składni kodów sam próbuje dojść do pewnych rzeczy ale coś mi nie wychodzi


Skocz do: