Alterar as propriedades de estilo de várias camadas simultaneamente?

31

Estou trabalhando em dados em massa. Tenho algumas centenas de imagens GeoTIFF importadas para um projeto QGIS e gostaria de modificar suas propriedades de camada - coisas como valor sem dados, transparência de certos valores de pixel, atribuições de mapa de cores ...

Mas não consigo encontrar uma maneira de aplicar essas alterações a várias camadas de uma só vez, além de editar o arquivo XML com uma pesquisa e substituição global. Existe uma maneira de fazer isso usando a GUI?

Kay F. Jahnke
fonte

Respostas:

45

Nas versões atuais do QGIS, você pode usar Estilo de cópia e Colar estilo no menu suspenso superior de Camadas (se você tiver uma ou mais camadas selecionadas na lista de camadas).


Para algumas versões mais antigas: Você pode selecionar várias camadas na lista de camadas, clique com o botão direito do mouse e use Colar estilo no menu de contexto.

Para outras versões mais antigas:

O plug-in MultiQML permite aplicar um estilo de camada QGIS a várias camadas ao mesmo tempo. Eu acho que é o mais próximo do que você está procurando no momento.

underdark
fonte
7

Se você salvar as opções de estilo para a camada de um vetor como um arquivo .qml, poderá aplicá-la em várias camadas ao mesmo tempo com o plug-in MultiQML. Basicamente, é uma janela de interface que permite selecionar em quais camadas você deseja aplicar o estilo (manualmente ou 'selecionar todas'); o botão 'aplicar estilo' permite selecionar o qml com as informações do estilo.

Informações a serem encontradas aqui: MultiQML

Tim Couwelier
fonte
5

Isso funciona para o QGIS 3.4 =>

  1. Crie um grupo de todas as camadas que você deseja que tenham o mesmo estilo
  2. Edite o estilo de uma das camadas do grupo ao seu gosto
  3. Clique com o botão direito do mouse na camada com estilo correto; 'Estilos' -> 'Estilo de cópia' -> 'Simbologia'
  4. Selecione o grupo que você criou antes
  5. Clique com o botão direito do mouse no grupo; 'Colar estilo'
GISinHelsinki
fonte
Essa precisa ser a resposta aceita, é rápida, fácil e simplesmente funciona ... sem nenhuma loucura complicada.
shawty
2

Você pode salvar seu projeto, fechar o QGIS, encontrar a definição de estilo no arquivo .qgs do seu projeto e colá-la em todas as camadas.

Nicolas Boisteault
fonte
1

Eu escrevi um script python que poderia ser útil se você quiser aplicar estilo a todas as camadas em um grupo ou mais. Tudo o que você precisa é de um arquivo .qml salvo com as propriedades que você deseja aplicar para cada tipo de camada.

from qgis.core import *
import os
#copy line 9-21 and change file names and group names if you have more groups

QML_file = ('yourqmlfile.qml')#insert path to qml file 
#add other qml files if you want to change style for more groups


def applystyle_group(name):
    root = QgsProject.instance().layerTreeRoot()
    point = root.findGroup(name) #Find Group
    for child in point.children():
        if isinstance(child, QgsLayerTreeLayer):
            if child.layer().type()==0:
                child.layer().loadNamedStyle(QML_file)#change the file name accordingly
                #you can add styles for other types of layers in the same group (line, point and polygon)

try: #If group is not present this will keep script running if you want to add more
    applystyle_group("*")#insert name of QGIS group
except Exception:
    pass
BC B.
fonte