Wybrałeś tylko jedną linię konturową do oznakowania w QGIS?

12

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

catindri
źródło
Nie jestem pewien, czy jest to duplikat, ale czy możesz spojrzeć na gis.stackexchange.com/q/89501/1297 i gis.stackexchange.com/q/59778/1297, aby zobaczyć, czy te przybliżą Cię do tego, czym jesteś szukasz? A potem myślę, że pomogłoby ci to pytanie, gdybyś podał kilka szczegółów na temat tego, czego próbowałeś i być może nie tak.
SaultDon,

Odpowiedzi:

13

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:

wprowadź opis zdjęcia tutaj

Dan C.
źródło
11

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.

wprowadź opis zdjęcia tutaj

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.

nhopton
źródło
6

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

zrzut ekranu 1 zrzut ekranu 2

Kay
źródło
@catindri, Pamiętaj, aby sprawdzić odpowiedź ..
Kay
3

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 ...).

Antonis
źródło