QGIS 한 번에 단일 레이어에 여러 스타일로드


10

여러 프로젝트에서 비슷한 레이어에 적용하기 위해 저장된 qml 스타일 파일 세트가 있습니다. 예를 들어 약 12 ​​가지 다른 스타일을 가진 선 종류 쉐이프 파일 레이어가 있습니다. 현재 새 스타일을 추가하고 각기 다른 스타일에 대해 qml 파일을로드하는 프로세스를 반복해야합니다. 그런 다음 해당 프로젝트에서 몇 번 더 수행하고 다음 프로젝트에서 전체를 다시 반복해야합니다.

같은 레이어에 여러 스타일 파일을 한 번에로드 할 수있는 방법이 있는지 확인하려고하십니까? 단일 qml을 탐색하는 대신 여러 qml 파일을 여러 개 선택하여 한 번에로드 할 수 있습니까?

레이어 당 여러 스타일의 예


1
같은 레이어에 여러 스타일을 한 번에로드한다는 것은 무슨 뜻입니까? 마지막으로로드 된 스타일이 이전에로드 된 모든 스타일보다 우선하지 않습니까? 아니면 동일한 레이어의 여러 사본에 여러 스타일을로드하겠습니까?
artwork21

현재 진행중인 작업 과정은 레이어 속성을 여는 것입니다. 스타일 버튼 (왼쪽 아래)을 사용하여 새 스타일을 추가하고 이름을 지정한 다음 저장된 .qml 파일을로드 한 다음 레이어에서 사용하는 많은 (10-20) 스타일에 대해 반복하십시오. 현재, 25 개가 넘는 프로젝트에서 약 7-8 개의 레이어에 대해이 작업을 하나씩 수행해야합니다. (반복적 인 데이터, 레이어 및 맵이지만 지방 자치 단체별로 지리적으로 분리 된 프로젝트 파일-각 지방 자치 단체는 별도의 고객입니다)
CEL-ma

여기에 파이썬을 사용하고 싶지만 아직 답이없는 비슷한 질문이 있습니다. gis.stackexchange.com/questions/294016/…
artwork21

답변:


3

pyqgis 스크립트 (주석 설명)를 사용하여 여러 스타일을로드 할 수 있습니다.

import os
from qgis.core import QgsMapLayerStyle
from qgis.utils import iface

# set path to your styles here
qml_path = '/home/user/qml'

layer = iface.activeLayer()
style_manager = layer.styleManager()

# read valid style from layer
style = QgsMapLayerStyle()
style.readFromLayer(layer)

for qml_file in [f for f in os.listdir(qml_path)
                 if os.path.isfile(os.path.join(qml_path, f)) and
                 f.endswith('.qml')]:
    # get style name from file
    style_name = os.path.basename(qml_file).strip('.qml')
    # add style with new name
    style_manager.addStyle(style_name, style)
    # set new style as current
    style_manager.setCurrentStyle(style_name)
    # load qml to current style
    (message, success) = layer.loadNamedStyle(os.path.join(qml_path, qml_file))
    print message
    if not success:  # if style not loaded remove it
        style_manager.removeStyle(style_name)

QGIS python 콘솔에서 실행하거나 처리 스크립트에 적용 할 수 있습니다.

(현재 LTR 버전 QGIS 2.18에서 테스트)


1
대단히 감사합니다! 여러 스타일을 성공적으로로드 할 수있었습니다. 알고리즘을 실행하는 동안 "[Errno 9] 잘못된 파일 설명자"오류 메시지가 나타 났지만 여전히 성공적으로 완료되었습니다! 이것은 나를 많은 일을 구할 것입니다!
CEL-ma

앞으로이 게시물을 읽는 다른 사람에게; 위에서 언급 한 "잘못된 파일"오류 메시지는 qml 경로에 선과 노드 벡터 레이어가 모두 있기 때문입니다. 분리되면 더 이상 오류가 없습니다.
CEL-ma

QGIS 3에서 작동하도록 해당 코드를 파이썬 3으로 변환하는 데 도움이 될 사람이 있습니까?
CEL-ma

0

내가 정확하게 이해하고 있다면 지오메트리 스타일을 적용하고 규칙이나 표현식을 레이어에 적용 할 필요는 없습니다. 열려있는 프로젝트에서 쉽고 빠르게?

그렇다면 스타일 관리자를 사용하여 심볼 라이브러리에 스타일을 저장할 수 있습니까? 레이어 스타일 패널을 열고 "라이브러리 열기"버튼을 클릭하십시오.


죄송합니다. 예-일괄로드하려는 스타일은 규칙을 기반으로합니다.
CEL-ma
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.