Czy można wybrać tylko jedną linię konturową do etykietowania?
Mam wiele etykiet dla każdej linii i wolę oznaczać tylko te główne, takie jak 1000 m
i1500 m
Czy można wybrać tylko jedną linię konturową do etykietowania?
Mam wiele etykiet dla każdej linii i wolę oznaczać tylko te główne, takie jak 1000 m
i1500 m
Odpowiedzi:
W QGIS 2.6 (być może także we wcześniejszych wersjach, nie wiem) możesz to zrobić w sekcji Właściwości warstwy, Labels
zakładka, Rendering
sekcja. Mniej więcej w połowie listy opcji renderowania znajduje się przycisk, który pozwoli Ci napisać wyrażenie, które określi listę funkcji, które będą faktycznie oznaczone. Twój wyraz byłby podobny "Elevation" IN (1000, 1500)
. Oto przycisk (na żółto), mam ten ustawiony tylko do etykietowania konturów o wartości rzędnej 32:
Jednym z podejść byłoby załadowanie warstwy konturu i nadanie jej stylu. Następnie załaduj ponownie tę samą warstwę i zastosuj filtr (kliknij warstwę prawym przyciskiem myszy i przejdź do „Filtruj”). Użyj wyrażenia filtru podobnego do pokazanego na zdjęciu. W moim przypadku chciałem dużych konturów w odstępach pionowych 50 metrów, a pole zawierające wartości wysokości nazywało się „prop_value”.
Po załadowaniu przefiltrowanej warstwy pokazującej główne kontury zastosuj etykiety konturu i (jeśli to konieczne) wzmocnij styl linii, jak pokazano.
Wyrażenie filtru:
("prop_value" % 50) = 0
wybierze również kontury w odstępach pionowych 50 metrów. Działa z bazami danych Spatialite, nie ma pewności co do plików kształtów.
Używam tego podejścia, które sprawia, że opisywanie i wyświetlanie konturów według warunków jest dość łatwe.
Używam „Właściwości zdefiniowanych danych” szerokości symbolu i kolorów linii konturu z wyrażeniem (patrz zrzut ekranu 1), dzięki któremu można zastosować różne szerokości linii w oparciu o niestandardowe warunki i podobne wyrażenie do etykietowania (patrz zrzut ekranu 2).
Wystarczy umieścić potrzebne wartości w wyrażeniach i to wszystko.
To znaczy, jeśli chcesz ukryć kontury inne niż 500 m, możesz użyć tego wyrażenia dla właściwości danych linii w symbolu:
CASE WHEN Elevation / 500 - floor(Elevation / 500) = 0 then
color_rgba(255,255,255,100)
else
color_rgba(255,255,255,0)
end
tzn. do etykietowania tylko w odstępach 500 m użyj tego wyrażenia do:
CASE WHEN Elevation /500 - floor(Elevation / 500) = 0 THEN Elevation || ' m' END
tzn. do zastosowania innej szerokości linii użyj takiego wyrażenia dla właściwości zdefiniowanych danych:
CASE WHEN Elevation / 100 - floor(Elevation / 100) = 0 THEN
0.25
WHEN Elevation / 50 - floor(Elevation / 50) = 0 THEN
0.15
ELSE
0.1
END
Innym wygodnym wyrażeniem jest "ELEV" LIKE '%00'
(krok 100m) lub "ELEV" LIKE '%00' OR "ELEV" LIKE '%50'
(krok 50m) lub "ELEV" LIKE '%0'
(krok 10m) itd., Gdzie „ELEV” to moje pole podnoszenia danych. Druga opcja działa tylko wtedy, gdy 50 jest wielokrotnością interwału (10 m lub 5 m ...).