複数のレイヤーのスタイルプロパティを同時に変更しますか?


31

私はバルクデータに取り組んでいます。QGISプロジェクトに数百のGeoTIFF画像をインポートし、それらのレイヤープロパティ(データ値なし、特定のピクセル値の透明度、カラーマップ割り当てなど)を変更したいのですが...

しかし、グローバルな検索と置換でXMLファイルを編集する以外に、これらの変更を一度に複数のレイヤーに適用する方法を見つけることはできないようです。GUIを使用してこれを行う方法はありますか?

回答:


45

現在のバージョンのQGISでは、[レイヤー]ドロップダウンメニューから[スタイルのコピー]を使用してから[スタイルの貼り付け]を使用できます(レイヤーリストで1つ以上のレイヤーが選択されている場合)。


一部の古いバージョンの場合:レイヤーリストで複数のレイヤーを選択し、右クリックしてコンテキストメニューから[スタイルの貼り付け]を使用できます。

他の古いバージョンの場合:

MultiQMLプラグインを使用すると、1つのQGISレイヤースタイルを複数のレイヤーに一度に適用できます。それはあなたが現在探しているものにできるだけ近いと思います。


7

1つのベクターレイヤーのスタイルオプションを.qmlファイルとして保存すると、MultiQMLプラグインで一度に複数のレイヤーに適用できます。基本的に、これは、スタイルを適用するレイヤーを選択する(手動または「すべて選択」)ことができるインターフェイスウィンドウです。「スタイルを適用」ボタンを使用すると、スタイル情報を含むqmlを選択できます。

ここにある情報:MultiQML


5

これはQGIS 3.4で機能します=>

  1. 同じスタイルにしたいすべてのレイヤーのグループを作成します
  2. グループ内のいずれかのレイヤーのスタイルを好みに合わせて編集します
  3. 正しくスタイル設定されたレイヤーを右クリックします。「スタイル」->「スタイルのコピー」->「記号」
  4. 前に作成したグループを選択します
  5. グループを右クリックします。「貼り付けスタイル」

これは受け入れられた答えである必要があります、それは速くて簡単で、それはただ動きます...狂気の複雑なプラグなしで。
ショーティー

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.