본문 바로가기
[Framework] - QGIS

#2. QgsFeature 이동

by Bebsae 2021. 4. 9.
    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.feature.id(): geom})
        
        self.iface.mapCanvas().refresh()
        self.layer.triggerRepaint()

        self.signal_completed_move_error_memo.emit()

특정 feature를 평행이동한다고 가정할 때, geometry를 먼저 뽑아낸다음, translate를 하여 geometry의 좌표 정보를 변경한다. 그 후, feature가 속한 레이어에 feature의 id와 변경된 좌표 geometry를 넘기면 해당 객체는 이동한 것으로 보인다.

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

# 5. QgsLayerTree  (0) 2021.04.21
# 4. QGIS MV (Model-View) 패턴  (0) 2021.04.21
# 3. QgsVectorDataProvider  (0) 2021.04.13
#1. 시점이동, 객체의 필드  (0) 2021.01.22
#0. QgsGeometry, asPolyline()  (0) 2021.01.22

댓글