Como definir a transparência por polígono em um shapefile no QGIS?

13

Como definir a transparência por polígono em um shapefile no QGIS?

Por exemplo:

um polígono com o campo "valor" = 1 deve ser totalmente transparente, enquanto o campo com o campo "valor" = 0,4 deve ter um valor de transparência de 40%. A cor dos polígonos deve depender de outro campo. De preferência, eu faria isso usando uma camada, mas usar duas camadas com alguns modos de mesclagem também é OK.

RutgerH
fonte

Respostas:

17

Você pode usar propriedades definidas por dados para isso. Use a guia estilo nas propriedades da camada e clique no botão de expressão à direita da cor.

Lá você pode usar a função color_rgba( red, green, blue, alpha )para criar a cor. Todos os valores precisam estar entre 0 e 255.

Exemplo:

color_rgba( 255, 0, 0, ( 1 - "transparency" ) * 255 )

Isso fornecerá um estilo totalmente vermelho com o alfa definido em um campo "transparência", conforme sua especificação na pergunta.

No editor de expressões, você encontrará várias outras funções relacionadas a cores que podem atender melhor às suas necessidades, basta explorá-las e ler a documentação delas diretamente no editor de expressões.

Outro exemplo de valores nominais (qualitativos) que você normalmente classificaria é trabalhar no espaço hsv:

Existe a função color_hsva( hue, saturation, value, alpha )para criar a cor. Os valores precisam estar entre

  • matiz: 0-360 (ou seja, veja abaixo)
  • valor e saturação: 0-100
  • alfa: 0-255.

Exemplo:

color_hsva( 
  CASE 
    WHEN "classification" = 'red' THEN 0
    WHEN "classification" = 'blue' THEN 240
  END CASE, -- hue
  80,  -- saturation
  80,  -- value
  ( 1 - "transparency" ) * 255  -- alpha
)

insira a descrição da imagem aqui

Para QGIS> = 2.12, considere a resposta @ndawsons.

Matthias Kuhn
fonte
Ver resposta relacionada abaixo para QGIS> = 2,12
ndawson
11

Como acompanhamento da resposta de Matthias, em QGIS> = 2.12, você pode usar uma cor de preenchimento definida por dados com a expressão:

 set_color_part(@value, 'alpha', ( 1 - "transparency" ) * 255 )

O que essa expressão faz é pegar a cor original do polígono (@value) e substituir o canal alfa (opacidade) pelo valor calculado no campo). Isso significa que você pode definir a expressão da cor de preenchimento e, em seguida, seguir em frente e usar renderizadores categorizados ou graduados para definir automaticamente a cor de preenchimento base e a regra de opacidade ainda será respeitada. Não é necessário codificar os valores rgb dessa maneira!

ndawson
fonte
1
Abordagem agradável e flexível!
Matthias Kuhn
Isso não parece funcionar no QGIS 3+. Depois de adicionar essa expressão, todos os polígonos assumem uma única cor com a mesma opacidade.
22419 robroc
3

Você também pode definir esses valores nas Propriedades da camada (clique com o botão direito do mouse em -> Propriedades).
Use Estilo -> Categorizado e selecione a coluna que deseja usar, por exemplo 'valor', escolha as cores na rampa de cores e clique em 'Classificar'.
Depois, você pode definir a cor de cada valor e sua transparência.

insira a descrição da imagem aqui

Se você adicionar novos valores à camada usada, clique em Clasify para adicioná-los ao seu estilo existente.

Martin
fonte
1
Isso não permitirá o uso de campos diferentes para transparência e classificação, conforme especificado na pergunta.
Matthias Kuhn