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 mi1500 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 mi1500 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, Labelszakładka, Renderingsekcja. 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 ...).