Modifier les propriétés de style de plusieurs calques simultanément?

31

Je travaille sur des données en masse. J'ai quelques centaines d'images GeoTIFF importées dans un projet QGIS, et je voudrais modifier leurs propriétés de couche - des choses comme la valeur sans données, la transparence de certaines valeurs de pixels, les affectations de cartes de couleurs ...

Mais je n'arrive pas à trouver un moyen d'appliquer ces modifications à plusieurs couches à la fois, à moins de modifier le fichier XML avec une recherche et remplacement globale. Existe-t-il un moyen de le faire en utilisant l'interface graphique?

Kay F. Jahnke
la source

Réponses:

45

Dans les versions actuelles de QGIS, vous pouvez utiliser Copier le style puis Coller le style dans le menu déroulant supérieur Calques (si vous avez sélectionné un ou plusieurs calques dans la liste des calques).


Pour certaines anciennes versions: vous pouvez sélectionner plusieurs calques dans la liste des calques, cliquer avec le bouton droit et utiliser Coller le style dans le menu contextuel.

Pour les autres versions plus anciennes:

Le plugin MultiQML vous permet d'appliquer un style de couche QGIS à plusieurs couches à la fois. Je pense que c'est aussi proche de ce que vous recherchez que possible actuellement.

obscur
la source
7

Si vous enregistrez les options de style pour un calque vectoriel en tant que fichier .qml, vous pouvez l'appliquer sur plusieurs calques à la fois avec le plugin MultiQML. Fondamentalement, c'est une fenêtre d'interface qui vous permet de sélectionner les calques auxquels vous souhaitez appliquer le style (à la main ou `` sélectionner tout ''), le bouton `` appliquer le style '' vous permet de sélectionner le qml avec les informations de style.

Infos à trouver ici: MultiQML

Tim Couwelier
la source
5

Cela fonctionne pour QGIS 3.4 =>

  1. Créez un groupe de tous les calques que vous souhaitez avoir le même style
  2. Modifiez le style de l'un des calques du groupe à votre convenance
  3. Cliquez avec le bouton droit sur le calque correctement stylisé; 'Styles' -> 'Style de copie' -> 'Symbologie'
  4. Sélectionnez le groupe que vous avez créé auparavant
  5. Cliquez avec le bouton droit sur le groupe; «Coller le style»
GISinHelsinki
la source
Cela doit être la réponse acceptée, c'est rapide et c'est facile et cela fonctionne juste ... sans aucune complication compliquée dans la folie.
shawty
2

Vous pouvez enregistrer votre projet, fermer QGIS, trouver la définition de style dans le fichier .qgs de votre projet, puis le coller pour chaque couche.

Nicolas Boisteault
la source
1

J'ai écrit un script python qui pourrait être utile si vous souhaitez appliquer un style à toutes les couches d'un groupe ou plus. Tout ce dont vous avez besoin est un fichier .qml enregistré avec les propriétés que vous souhaitez appliquer pour chaque type de couche.

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.
la source