여러 레이어의 스타일 속성을 동시에 변경 하시겠습니까?


31

대량 데이터를 작업 중입니다. QGIS 프로젝트로 가져온 수백 개의 GeoTIFF 이미지가 있는데 데이터 없음 값, 특정 픽셀 값의 투명도, 컬러 맵 할당 등과 같은 레이어 속성을 수정하고 싶습니다.

그러나 글로벌 검색 및 교체를 사용하여 XML 파일을 편집하는 것만으로는 이러한 변경 사항을 한 번에 여러 계층에 적용하는 방법을 찾지 못하는 것 같습니다. GUI를 사용하여이를 수행 할 수있는 방법이 있습니까?

답변:


44

현재 버전의 QGIS에서는 레이어 목록에서 하나 이상의 레이어를 선택한 경우 레이어 상단 드롭 다운 메뉴에서 스타일 복사와 스타일 붙여 넣기를 사용할 수 있습니다.


일부 이전 버전의 경우 : 레이어 목록에서 여러 레이어를 선택하고 마우스 오른쪽 버튼을 클릭 한 다음 상황에 맞는 메뉴에서 스타일 붙여 넣기를 사용할 수 있습니다.

다른 이전 버전의 경우 :

MultiQML 플러그인을 사용하면 하나의 QGIS 레이어 스타일을 여러 레이어에 한 번에 적용 할 수 있습니다. 나는 그것이 당신이 현재 찾고있는 것에 가깝다고 생각합니다.


7

하나의 벡터 레이어에 대한 스타일 옵션을 .qml 파일로 저장하면 MultiQML 플러그인을 사용하여 한 번에 여러 레이어에 적용 할 수 있습니다. 기본적으로 스타일을 적용 할 레이어 (손으로 또는 '모두 선택')를 선택할 수있는 인터페이스 창이며, '스타일 적용'버튼을 사용하면 스타일 정보가있는 qml을 선택할 수 있습니다.

정보는 여기에서 찾을 수 있습니다 : MultiQML


5

이것은 QGIS 3.4 =>에서 작동합니다.

  1. 같은 스타일을 가지려는 모든 레이어 그룹을 만듭니다.
  2. 그룹의 레이어 중 하나의 스타일을 원하는대로 편집
  3. 올바른 스타일의 레이어를 마우스 오른쪽 버튼으로 클릭하십시오. '스타일'-> '복사 스타일'-> '기호
  4. 전에 만든 그룹 을 선택하십시오
  5. 그룹을 마우스 오른쪽 버튼으로 클릭하십시오. '붙여 넣기 스타일'

이것은 받아 들일만한 대답이어야하고, 빠르고 쉽고 빠르며 복잡한 플러그 인 광증없이 작동합니다.
shawty

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.