본문 바로가기

QGIS3

# 5. QgsLayerTree root: QgsLayerTree = QgsProject().instance().layerTreeRoot() QgsLayerTree 클래스는 QgsLayerTreeNode클래스 기반이므로 child()와 parent() 메소드를 통해 부모, 자식 노드를 반환할 수 있다. 이는 계층형 UI의 model을 구현할 때 용이하다. """ /*************************************************************************** begin : email : ***************************************************************************/ """ from qgis.gui import QgsLayerTreeView .. 2021. 4. 21.
# 4. QGIS MV (Model-View) 패턴 필자는 QGIS Framework의 위와 같은 UI에서 여러 그룹을 선택했을 때 해당 그룹들을 반환하는 유틸을 작업했다. QGIS에서 자체적으로 선택된 레이어를 반환하는 QgisInterface.activeLayer() 메소드가 있지만 해당 메소드는 하나의 레이어밖에 못가져오는 한계가 있다. 일단 이 포스트를 시작하기 이전에 염두해야할 사항이 있다. 1. QGIS Framework는 PyQT 기반이라는 것 2. MV (Model-View) 패턴으로 UI가 구성되어 있다는 것 우선 다음과 같은 코드로 레이어 패널에 속한 그룹의 트리(QgsLayerTree)를 가져왔다. root = QgsProject.instance().layerTreeRoot() 그리고 해당 트리를 model에 import한 다음 vie.. 2021. 4. 21.
# 3. QgsVectorDataProvider QgsVectorLayer 클래스의 dataProvider() 메소드를 호출하면 해당 벡터 레이어의 QgsVectorDataProvider 인스턴스를 얻을 수 있다. 이 인스턴스는 벡터 레이어에 속하는 QgsFeature 인스턴스들을 추가, 수정, 삭제를 할 수 있다. self.connection_feature = QgsFeature() connection_geometry = QgsGeometry().fromPolylineXY(points) self.connection_feature.setGeometry(connection_geometry) self.connection_layer.dataProvider().addFeatures((self.connection_feature,))위 코드는 QgsFeature.. 2021. 4. 13.