Este post aborda o processo de configuração de simbologia através do atributo RGBA, permite ultrapassar uma limitação do QGIS, que se encontra ainda por resolver (http://hub.qgis.org/issues/11491). Resultou da necessidade de produzir a simbologia oficial para a carta de ocupação de solos Corine Land Cover (CLC) com base nos valores RGB.
Objetivo inicial:
Simbolizar a carta de ocupação de solos Corine Land Cover 2006 (CLC2006), por classes utilizando o sistema de cores RGBA.
1. A preparação União da tabela de atributos da CLC2006 com a tabela da nomenclatura que possuía os valores RGB. (Fig. 1) da informação consistiu:
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig1_unir_camadas.png)
2. Criação de novo campo denominado [rbga] do tipo texto com a concatenação dos campos R, G, B e a criação do parâmetro A (alfa) que corresponde ao grau de opacidade (Fig. 2).
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig2_criar_campo_RGBA.png)
Nota: Os valores do campo devem variar entre 0 e 255 separados por vírgula, o valor da opacidade é 255 para todas as classes (Fig. 3)
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig3_tabela_de_atributos.png)
3. Com a coluna rgba criada na tabela de atributos, procedeu-se à configuração do estilo.
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig5_configurar_estilo.png)
Problema
O mapa aparece corretamente simbolizado, mas a legenda não reflete as categorias criadas, todas aparecem a negro, não permitindo uma interpretação correta da informação.
Identificou-se que se trata-se de uma limitação do QGIS, que se encontra ainda por resolver (http://hub.qgis.org/issues/11491)
Solução
Criar um script python que faça a associação da cor à classe respetiva.
Com a ajuda do Alexandre Neto do grupo de utilizadores do QGIS PT, que produziu o seguinte script, é possível ultrapassar com sucesso o problema. Script disponível aqui.
from PyQt4.QtGui import QColor iface = qgis.utils.iface mc = iface.mapCanvas() layer = mc.currentLayer() features = layer.getFeatures() color_dict = dict() for feature in features: cat = feature.attribute('designacao') rgba_value = feature.attribute('rbga') color_dict[cat] = rgba_value renderer = layer.rendererV2() categories = renderer.categories() for category in categories: value = category.value() cat_id = renderer.categoryIndexForValue(value) print cat_id if value != u'': rgba = color_dict[value].split(',') rgba = [int(i) for i in rgba ] color = QColor(rgba[0],rgba[1],rgba[2],rgba[3]) symbol = category.symbol() symbol.setColor(color) renderer.updateCategorySymbol(cat_id,symbol) mc.refresh() qgis.utils.iface.legendInterface().refreshLayerSymbology(layer)
Procedimentos de utilização do script:
1. Abrir a consola python (Módulos > Consola Python);
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig7_abrir_consola.png)
2. Dentro da consola abrir o script;
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig8_carregar_script.png)
3. Editar as linhas 12 e 13 e adaptar ao nome das colunas relativas ao campo das categorias e ao campo com os valores RBGA. Gravar.
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig9_editar_campos_script.png)
4. Definir estilo categorizado utilizando o campo respetivo;
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig10_atribuir_estilo.png)
5. Desativar a opção Substituir dados definidos;
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig11_desligar_data_defined_properties.png)
6. Correr o script.
![](https://www.qgis.pt/wp-content/uploads/2020/04/ms_fig12_correr_script.png)
Resultado final
Mapa corretamente simbolizado com a respetiva legenda!
![](https://www.qgis.pt/wp-content/uploads/2015/09/ms_fig13_resultado_final-1024x552.png)