同时更改几层的样式属性?


31

我正在处理批量数据。我将数百个GeoTIFF图像导入到QGIS项目中,我想修改其图层属性-例如无数据值,某些像素值的透明度,颜色图分配等。

但是,我似乎找不到一种将这些更改同时应用于多个层的方法,除非使用全局搜索和替换来编辑XML文件。有没有办法使用GUI做到这一点?

Answers:


45

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


对于某些较旧的版本:您可以在图层列表中选择多个图层,单击鼠标右键,然后从上下文菜单中使用“粘贴样式”。

对于其他旧版本:

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


7

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

可以在这里找到信息:MultiQML


5

这适用于QGIS 3.4 =>

  1. 创建一组要具有相同样式的所有图层
  2. 根据自己的喜好编辑组中图层之一的样式
  3. 右键单击样式正确的图层;'样式'->'复制样式'->'符号学'
  4. 选择您之前创建的
  5. 右键单击该组;“粘贴样式”

这需要成为公认的答案,它快速,简单,有效……没有任何复杂的疯狂现象。
shawty


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.