QgsLayerTree

2021. 4. 21. 12:03·[Framework] - QGIS

QgsLayerTree 클래스 다이어그램

root: QgsLayerTree = QgsProject().instance().layerTreeRoot()

QgsLayerTree 클래스는 QgsLayerTreeNode클래스 기반이므로 child()와 parent() 메소드를 통해 부모, 자식 노드를 반환할 수 있다. 이는 계층형 UI의 model을 구현할 때 용이하다.

 

"""
/***************************************************************************
        begin                : 
        email                : 
 ***************************************************************************/
"""
from qgis.gui import QgsLayerTreeView
from qgis.gui import QgisInterface
from qgis.core import QgsLayerTree
from qgis.core import QgsLayerTreeNode
from qgis.core import QgsProject


class LayerViewUtils:
    @staticmethod
    def get_active_node(iface: QgisInterface):
        """
        레이어 패널에 선택된 노드 (그룹, 노드)
        :param iface:
        :return: QgsLayerTreeNode
        """
        view: QgsLayerTreeView = iface.layerTreeView()
        for node in view.selectedNodes():
            yield node

    @staticmethod
    def get_active_group(iface: QgisInterface):
        """
        레이어 패널에 선택된 노드 (그룹)
        :param iface:
        :return: QgsLayerTreeNode
        """
        root: QgsLayerTree = QgsProject.instance().layerTreeRoot()
        view: QgsLayerTreeView = iface.layerTreeView()
        for node in view.selectedNodes():
            if root.isGroup(node):
                yield node

    @staticmethod
    def get_active_layer(iface: QgisInterface):
        """
        레이어 패널에 선택된 노드 (레이어)
        :param iface:
        :return: QgsLayerTreeNode
        """
        root: QgsLayerTree = QgsProject.instance().layerTreeRoot()
        view: QgsLayerTreeView = iface.layerTreeView()
        for node in view.selectedNodes():
            if root.isLayer(node):
                yield node

    @staticmethod
    def get_groups():
        """
        모든 그룹
        :return: QgsLayerTreeNode
        """
        root: QgsLayerTree = QgsProject.instance().layerTreeRoot()
        for node in root.children():
            node: QgsLayerTreeNode
            if root.isGroup(node):
                yield node

    @staticmethod
    def get_visible_groups():
        """
        체크된 그룹
        :return: QgsLayerTreeNode
        """
        root: QgsLayerTree = QgsProject.instance().layerTreeRoot()
        for node in root.children():
            node: QgsLayerTreeNode
            if root.isGroup(node) and node.itemVisibilityChecked():
                yield node

    @classmethod
    def get_layers_by_group_name(cls, group_name: str):
        """
        그룹이름에 해당하는 모든 레이어
        :param group_name:
        :return: QgsLayerTreeNode
        """
        root: QgsLayerTree = QgsProject.instance().layerTreeRoot()
        for group in cls.get_groups():
            if group.name() != group_name:
                continue
            for child in group.children():
                if root.isLayer(child):
                    yield child

위 코드는 QgsLayerTree 클래스의 API들을 응용한 것들이다.

'[Framework] - QGIS' 카테고리의 다른 글

QGIS MV (Model-View) 패턴  (0) 2021.04.21
QgsVectorDataProvider  (0) 2021.04.13
QgsFeature 이동  (0) 2021.04.09
시점이동, 객체의 필드  (0) 2021.01.22
QgsGeometry, asPolyline()  (0) 2021.01.22
'[Framework] - QGIS' 카테고리의 다른 글
  • QGIS MV (Model-View) 패턴
  • QgsVectorDataProvider
  • QgsFeature 이동
  • 시점이동, 객체의 필드
Bebsae
Bebsae
  • Bebsae
    뱁새zip
    Bebsae
  • 전체
    오늘
    어제
    • 분류 전체보기 (108)
      • [DevOps] - Kubernetes (5)
      • [DevOps] - AWS (1)
      • [AI] - Machine Learning (19)
      • [AI] - Neural Network (7)
      • [CS] - Network (2)
      • [CS] - Data Structure (3)
      • [CS] - Design Pattern (6)
      • [Language] - Python (15)
      • [Library] - Numpy (7)
        • Quick Start (5)
        • API (2)
      • [Framework] - Django (3)
      • [Framework] - QGIS (6)
      • [Framework] - PyQT (4)
      • [Mathematics] - Linear Alge.. (14)
      • [Mathematics] - Statistical (2)
      • [ETC] - Python (3)
      • [ETC] - C++ (1)
      • [ETC] - Linux (1)
      • 논문 (5)
      • 회고록 (3)
      • 생산성 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    선형대수
    Linear
    Learning
    numpy
    디자인패턴
    MachineLearning
    algebra
    Python
    분해
    DEEPLEARNING
    파이썬
    QGIS
    Machine
    신경망
    RNN
    decomposition
    linearalgebra
    교차검증
    머신러닝
    Convolution
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Bebsae
QgsLayerTree
상단으로

티스토리툴바