É possível selecionar apenas uma linha de contorno para rotular?
Tenho vários rótulos para cada linha e prefiro rotular apenas os principais, como 1000 m
e1500 m
É possível selecionar apenas uma linha de contorno para rotular?
Tenho vários rótulos para cada linha e prefiro rotular apenas os principais, como 1000 m
e1500 m
Respostas:
No QGIS 2.6 (talvez versões anteriores também, eu não sei), você pode fazer isso na seção Propriedades da camada, Labels
guia Rendering
. Na metade da lista de opções de renderização, há um botão que permite escrever uma expressão que define a lista de recursos que serão realmente rotulados. Sua expressão seria algo parecido "Elevation" IN (1000, 1500)
. Aqui está o botão (em amarelo), tenho este definido apenas para rotular contornos com um valor de elevação de 32:
Uma abordagem seria carregar a camada de contorno e modelá-la. Em seguida, carregue a mesma camada novamente e aplique um filtro (clique com o botão direito do mouse na camada e desça até 'Filtro ..'). Use uma expressão de filtro semelhante à mostrada na imagem. No meu caso, eu queria grandes contornos em intervalos verticais de 50 metros e o campo contendo os valores de elevação era chamado "prop_value".
Quando a camada filtrada que mostra os principais contornos estiver carregada, aplique rótulos de contorno e (se necessário) reforce o estilo da linha, como mostrado.
A expressão de filtro:
("prop_value" % 50) = 0
também selecionará contornos em intervalos verticais de 50 metros. Funciona com bancos de dados Spatialite, não tenho certeza sobre os shapefiles.
Estou usando essa abordagem que facilita bastante a rotulagem e a exibição de linhas de contorno por condição.
Uso as "Propriedades definidas por dados" da largura do símbolo de linha e as cores das linhas de contorno com uma expressão (veja a captura de tela 1), na qual é possível aplicar larguras de linhas diferentes com base em condições personalizadas e uma expressão semelhante para rotular (veja a captura de tela 2).
Basta colocar os valores necessários para as expressões e isso é tudo.
Ou seja, se você deseja ocultar linhas de contorno diferentes de 500 m, é possível usar esta expressão para as propriedades definidas por data do símbolo de linha:
CASE WHEN Elevation / 500 - floor(Elevation / 500) = 0 then
color_rgba(255,255,255,100)
else
color_rgba(255,255,255,0)
end
ou seja, para rotular apenas intervalos de 500 m, use esta expressão para:
CASE WHEN Elevation /500 - floor(Elevation / 500) = 0 THEN Elevation || ' m' END
ou seja, para aplicar diferentes larguras de linha, use uma expressão como esta para propriedades definidas por dados:
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