Изменить свойства стиля нескольких слоев одновременно?

31

Я работаю с большими объемами данных. У меня есть несколько сотен изображений GeoTIFF, импортированных в проект QGIS, и я хотел бы изменить их свойства слоя - такие как отсутствие данных-данных, прозрачность определенных значений пикселей, назначения цветовой карты ...

Но я не могу найти способ применить эти изменения сразу к нескольким слоям, если не считать редактирования файла XML с помощью глобального поиска и замены. Есть ли способ сделать это с помощью графического интерфейса?

Кей Ф. Янке
источник

Ответы:

45

В текущих версиях QGIS вы можете использовать «Копировать стиль», а затем «Вставить стиль» в раскрывающемся меню «Слои» (если в списке слоев выбран один или несколько слоев).


Для некоторых более старых версий: вы можете выбрать несколько слоев в списке слоев, щелкнуть правой кнопкой мыши и использовать Paste Style из контекстного меню.

Для других старых версий:

Плагин MultiQML позволяет применять один стиль слоя QGIS к нескольким слоям одновременно. Я думаю, что это настолько близко к тому, что вы ищете, насколько это возможно в настоящее время.

Подземье
источник
7

Если вы сохраните параметры стиля для одного векторного слоя в виде файла .qml, вы можете применить его к нескольким слоям одновременно с помощью MultiQML-плагина. По сути, это интерфейсное окно, которое позволяет вам выбрать, к каким слоям вы хотите применить стиль (вручную или «выбрать все»), кнопка «Применить стиль» позволяет вам выбрать qml с информацией о стиле.

Информацию можно найти здесь: MultiQML

Тим Кувельер
источник
5

Это работает для QGIS 3.4 =>

  1. Создайте группу из всех слоев, которые вы хотите иметь одинаковый стиль
  2. Отредактируйте стиль одного из слоев в группе по своему вкусу
  3. Щелкните правой кнопкой мыши на правильно стилизованном слое; «Стили» -> «Стиль копирования» -> «Символика»
  4. Выберите группу, которую вы создали ранее
  5. Щелкните правой кнопкой мыши группу; 'Paste Style'
GISinHelsinki
источник
Это должен быть принятый ответ, он быстрый, легкий и просто работает ... без какого-либо сложного безумия.
Shawty
2

Вы можете сохранить свой проект, закрыть QGIS, найти определение стиля в файле .qgs вашего проекта, а затем вставить его для каждого слоя.

Николя Буасто
источник
1

Я написал скрипт на python, который может быть полезен, если вы хотите применить стиль ко всем слоям в группе или более. Все, что вам нужно - это сохраненный файл .qml со свойствами, которые вы хотите применить для каждого типа слоя.

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
До н.э.
источник