我正在处理批量数据。我将几百个GeoTIFF图像导入到QGIS项目中,我想修改其图层属性-例如无数据值,某些像素值的透明度,颜色图分配... br />但是,我似乎找不到一种将这些更改同时应用于多个层的方法,除非使用全局搜索和替换来编辑XML文件。有没有办法使用GUI来做到这一点?

#1 楼

在当前版本的QGIS中,可以从“图层”顶部下拉菜单中使用“复制样式”,然后使用“粘贴样式”(如果在图层列表中选择了一个或多个图层)。
较旧的版本:
您可以在图层列表中选择多个图层,右键单击并从上下文菜单中使用“粘贴样式”。

对于其他较旧的版本:

MultiQML插件使您可以一次将一种QGIS图层样式应用于多个图层。我认为这与您目前正在寻找的商品尽可能接近。

评论


在QGIS 3.10上对我不起作用,“粘贴样式”仅将样式粘贴到所选内容的最后一层。从GISinHelsinki的答案进行分组。

– Dahn
20 Dec 4'在8:01

#2 楼

这适用于QGIS 3.4 =>


创建要具有相同样式的所有图层的组
将组中一个图层的样式编辑为喜欢
右键单击样式正确的图层; '样式'->'复制样式'->'符号学'

选择您之前创建的组
右键单击该组; '粘贴样式'



评论


这需要成为公认的答案,它既快速又简单,并且可以正常工作……没有任何复杂的疯狂现象。

–美
19年11月28日在19:07

“粘贴样式”不适用于QGIS 3.16中的组上下文菜单。最终,我合并了矢量层(gis.stackexchange.com/questions/25061/…)并修改了所得层的样式。

–苏希
20 Dec 9'在8:30

#3 楼

如果将一个矢量层的样式选项另存为.qml文件,则可以使用MultiQML插件一次将其应用于多个层。基本上,这是一个界面窗口,可让您选择要应用样式的层(手动或“全选”),“应用样式”按钮可让您选择带有样式信息的qml。

可在此处找到的信息:MultiQML

#4 楼

您可以保存您的项目,关闭QGIS,在项目的.qgs文件中找到样式定义,然后将其粘贴到每个图层。

#5 楼

我编写了一个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