본문 바로가기

[Framework] - QGIS6

# 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.
#2. QgsFeature 이동 def canvasReleaseEvent(self, e): self.rubberBand.hide() self.rubberBand.reset() point_release: QgsPointXY = self.toMapCoordinates(e.pos()) displacement_x = point_release.x()-self.point_start.x() displacement_y = point_release.y()-self.point_start.y() geom: QgsGeometry = self.feature.geometry() geom.translate(displacement_x, displacement_y) self.layer.dataProvider().changeGeometryValues({self.fea.. 2021. 4. 9.
#1. 시점이동, 객체의 필드 >>> iface.activeLayer().select(42) 해당 ID의 객체 선택 >>> iface.mapCanvas().zoomToSelected() 선택된 객체로 시점 이동 >>> feat = iface.activeLayer().getFeature(613) >>> fields = feat.fields() # return QgsFields (iterater) 해당 객체의 속성들을 받을 수 있다. >>> feat.attribute('Text') 해당 객체의 Text 속성에 대한 값 2021. 1. 22.
#0. QgsGeometry, asPolyline() iface.activeLayer().selectedFeatures()[0].geometry() 선택된 객체들중 첫 번째의 지오메트리 정보를 반환한다. 해당 객체는 선형 객체이기 때문에 LineString 형태를 띄고 있다. iface.activeLayer().selectedFeatures()[0].geometry().asPolyline() [, , , , , , , , , , , ] 선형객체의 각 포인트를 리스트로 반환하려면 asPolyline() 메소드를 사용하면 된다. 각 점들은 QgsPointXY 타입이다. 2021. 1. 22.