Adding Points
The following map tool allows the user to add a new Point feature to the given layer:
class AddPointTool(QgsMapTool): def __init__(self, canvas, layer): QgsMapTool.__init__(self, canvas) self.canvas = canvas self.layer = layer self.setCursor(Qt.CrossCursor) def canvasReleaseEvent(self, event): point = self.toLayerCoordinates(self.layer, event.pos()) feature = QgsFeature() feature.setGeometry(QgsGeometry.fromPoint(point)) self.layer.addFeature(feature) self.layer.updateExtents()
As you can see, this straightforward map tool sets the mouse cursor to a cross shape, and when the user releases the mouse over the map canvas, a new QgsGeometry
object is created that represents a point at the current mouse position. This point is then added to the layer using layer.addFeature()
, and the layer's extent is updated in case the newly added point is outside the layer's current extent.
Of course, this map tool...