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 |
댓글