Escolhendo apenas uma linha de contorno para rotular no QGIS?

12

É 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 me1500 m

catindri
fonte
Não tenho certeza se isso é uma duplicata, mas você pode dar uma olhada em gis.stackexchange.com/q/89501/1297 e gis.stackexchange.com/q/59778/1297 para ver se isso o aproxima mais do que você está procurando por? E então acho que ajudaria sua pergunta se você fornecesse alguns detalhes sobre o que tentou e talvez sobre onde está errado.
SaultDon

Respostas:

13

No QGIS 2.6 (talvez versões anteriores também, eu não sei), você pode fazer isso na seção Propriedades da camada, Labelsguia 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:

insira a descrição da imagem aqui

Dan C
fonte
11

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.

insira a descrição da imagem aqui

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.

Nhopton
fonte
6

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

captura de tela 1 captura de tela 2

Kay
fonte
@catindri, Mente para verificar uma resposta ..
Kay
3

Outra expressão conveniente é "ELEV" LIKE '%00'(etapa 100m) ou "ELEV" LIKE '%00' OR "ELEV" LIKE '%50'(etapa 50m) ou "ELEV" LIKE '%0'(etapa 10m) etc., onde "ELEV" é o meu campo de elevação de dados. A segunda opção funciona apenas se 50 for um múltiplo de intervalo (10m ou 5m ...).

Antonis
fonte