Zmienić właściwości stylu kilku warstw jednocześnie?


31

Pracuję nad danymi zbiorczymi. Mam kilkaset obrazów GeoTIFF zaimportowanych do projektu QGIS i chciałbym zmodyfikować ich właściwości warstw - takie jak brak danych, przezroczystość niektórych wartości pikseli, przypisania map kolorów ...

Ale nie mogę znaleźć sposobu na zastosowanie tych zmian do kilku warstw jednocześnie, bez edycji pliku XML za pomocą globalnego wyszukiwania i zamiany. Czy można to zrobić za pomocą GUI?

Odpowiedzi:


45

W bieżących wersjach QGIS można użyć opcji Kopiuj styl, a następnie Wklej styl z górnego menu rozwijanego Warstwy (jeśli na liście warstw wybrano jedną lub więcej warstw).


W przypadku niektórych starszych wersji: Możesz wybrać wiele warstw z listy warstw, kliknąć prawym przyciskiem myszy i użyć opcji Wklej styl z menu kontekstowego.

W przypadku innych starszych wersji:

Wtyczka MultiQML pozwala zastosować jeden styl warstwy QGIS do wielu warstw jednocześnie. Myślę, że to tak blisko tego, czego szukasz, jak to obecnie możliwe.


7

Jeśli zapiszesz opcje stylu dla jednej warstwy wektorowej jako plik .qml, możesz zastosować ją na wielu warstwach jednocześnie za pomocą wtyczki MultiQML. Zasadniczo jest to okno interfejsu, które pozwala wybrać warstwy, do których chcesz zastosować styl (ręcznie lub „zaznacz wszystko”), przycisk „zastosuj styl” pozwala wybrać qml z informacją o stylu.

Informacje można znaleźć tutaj: MultiQML


5

Działa to dla QGIS 3.4 =>

  1. Utwórz grupę wszystkich warstw, które mają mieć ten sam styl
  2. Edytuj styl jednej z warstw w grupie według własnych upodobań
  3. Kliknij prawym przyciskiem myszy poprawnie stylizowaną warstwę; „Style” -> „Styl kopiowania” -> „Symbolika”
  4. Wybierz utworzoną wcześniej grupę
  5. Kliknij grupę prawym przyciskiem myszy; „Wklej styl”

To musi być zaakceptowana odpowiedź, jest szybka i łatwa i po prostu działa ... bez żadnych skomplikowanych wtyczek szaleństwa.
shawty

2

Możesz zapisać swój projekt, zamknąć QGIS, znaleźć definicję stylu w pliku .qgs swojego projektu, a następnie wkleić go dla każdej warstwy.


1

Napisałem skrypt Pythona, który może być przydatny, jeśli chcesz zastosować styl do wszystkich warstw w grupie lub więcej. Wystarczy mieć zapisany plik .qml z właściwościami, które chcesz zastosować dla każdego rodzaju warstwy.

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.