Thay đổi thuộc tính phong cách của một số lớp đồng thời?


31

Tôi đang làm việc trên dữ liệu số lượng lớn. Tôi có vài trăm hình ảnh GeoTIFF được nhập vào dự án QGIS và tôi muốn sửa đổi các thuộc tính lớp của chúng - những thứ như giá trị không có dữ liệu, độ trong suốt của các giá trị pixel nhất định, gán bản đồ màu ...

Nhưng dường như tôi không thể tìm ra cách áp dụng các thay đổi này cho nhiều lớp cùng một lúc, không cần chỉnh sửa tệp XML bằng tìm kiếm và thay thế toàn cầu. Có cách nào để làm điều này bằng GUI không?

Câu trả lời:


45

Trong các phiên bản hiện tại của QGIS, bạn có thể sử dụng Sao chép kiểu và sau đó Dán Kiểu từ menu thả xuống trên cùng của Lớp (nếu bạn có một hoặc nhiều lớp được chọn trong danh sách lớp).


Đối với một số phiên bản cũ hơn: Bạn có thể chọn nhiều lớp trong danh sách lớp, nhấp chuột phải và sử dụng Dán Kiểu từ menu ngữ cảnh.

Đối với các phiên bản cũ hơn:

Plugin MultiQML cho phép bạn áp dụng một kiểu lớp QGIS cho nhiều lớp cùng một lúc. Tôi nghĩ rằng nó gần với những gì bạn đang tìm kiếm hiện tại có thể.


7

Nếu bạn lưu các tùy chọn kiểu cho lớp một vectơ dưới dạng tệp .qml, bạn có thể áp dụng nó cho nhiều lớp cùng một lúc với plugin MultiQML. Về cơ bản, đó là cửa sổ giao diện cho phép bạn chọn lớp nào bạn muốn áp dụng kiểu (bằng tay hoặc 'chọn tất cả'), nút 'áp dụng kiểu' cho phép bạn chọn qml với thông tin kiểu.

Thông tin được tìm thấy ở đây: MultiQML


5

Điều này hoạt động cho QGIS 3,4 =>

  1. Tạo một nhóm gồm tất cả các lớp bạn muốn có cùng kiểu
  2. Chỉnh sửa kiểu của một trong các lớp trong nhóm theo ý thích của bạn
  3. Nhấp chuột phải vào lớp được tạo kiểu chính xác; 'Kiểu' -> 'Sao chép kiểu' -> 'Biểu tượng'
  4. Chọn nhóm bạn đã tạo trước đó
  5. Nhấp chuột phải vào nhóm; 'Phong cách dán'

Đây cần phải là câu trả lời được chấp nhận, nó nhanh chóng và dễ dàng và nó chỉ hoạt động ... mà không có bất kỳ sự điên rồ phức tạp nào.
choàng

2

Bạn có thể lưu dự án của mình, đóng QGIS, tìm định nghĩa kiểu trong tệp .qss của dự án của bạn sau đó dán nó cho mỗi lớp.


1

Tôi đã viết một kịch bản python có thể hữu ích nếu bạn muốn áp dụng kiểu cho tất cả các lớp trong một nhóm hoặc nhiều hơn. Tất cả những gì bạn cần có là một tệp .qml đã lưu với các thuộc tính bạn muốn áp dụng cho từng loại lớp.

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.