Class: QgsMapToolDigitizeFeature

class qgis.gui.QgsMapToolDigitizeFeature

Bases: QgsMapToolCaptureLayerGeometry

This tool digitizes geometry of new point/line/polygon features on already existing vector layers Once the map tool is enabled, user can digitize the feature geometry. A signal will then be emitted.

New in version 3.10.

QgsMapToolDigitizeFeature(canvas: QgsMapCanvas, cadDockWidget: QgsAdvancedDigitizingDockWidget, mode: QgsMapToolCapture.CaptureMode = QgsMapToolCapture.CaptureNone) QgsMapToolDigitizeFeature is a map tool to digitize a feature geometry

Parameters:
activate(self)
addTopologicalPoints(self, vertices: Iterable[QgsPointXY]) QgsMapToolEdit.TopologicalResult

Adds a list of vertices to other features to keep topology up to date, e.g. to neighbouring polygons. The vertices list specifies a set of topological points to add, in the layer’s coordinate reference system.

Deprecated since version QGIS: 3.12 - will be removed in QGIS 4.0. Use the variant which accepts QgsPoint objects instead of QgsPointXY.

addTopologicalPoints(self, vertices: Iterable[QgsPoint]) -> QgsMapToolEdit.TopologicalResult Adds a list of vertices to other features to keep topology up to date, e.g. to neighbouring polygons. The vertices list specifies a set of topological points to add, in the layer’s coordinate reference system.

New in version 3.10.

addVertex(self, point: QgsPointXY) int

Adds a point to the rubber band (in map coordinates) and to the capture list (in layer coordinates)

Returns:

0 in case of success, 2 if coordinate transformation failed

addVertex(self, mapPoint: QgsPointXY, match: QgsPointLocator.Match) -> int Variant to supply more information in the case of snapping

Parameters:
  • mapPoint – The vertex to add in map coordinates

  • match – Data about the snapping match. Can be an invalid match, if point not snapped.

cadCanvasReleaseEvent(self, e: QgsMapMouseEvent)
Parameters:

e (QgsMapMouseEvent) –

capabilities(self) QgsMapToolCapture.Capabilities
Return type:

QgsMapToolCapture.Capabilities

checkGeometryType(self) bool

Check if CaptureMode matches layer type. Default is True.

Return type:

bool

childEvent(self, QChildEvent)
closePolygon(self)

Close an open polygon

connectNotify(self, QMetaMethod)
createRubberBand(self, geometryType: Qgis.GeometryType = Qgis.GeometryType.Line, alternativeBand: bool = False) QgsRubberBand

Creates a rubber band with the color/line width from the QGIS settings. The caller takes ownership of the returned object

Parameters:
  • geometryType

  • alternativeBand – if True, rubber band will be set with more transparency and a dash pattern. default is False.

currentVectorLayer(self) QgsVectorLayer

Returns the current vector layer of the map canvas or 0

customEvent(self, QEvent)
deactivate(self)
digitizingCanceled

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Parameters:
  • name (str = ...) –

  • revision (int = ...) –

  • arguments (Sequence = ...) –

Return type:

PYQT_SIGNAL

digitizingCompleted

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Parameters:
  • name (str = ...) –

  • revision (int = ...) –

  • arguments (Sequence = ...) –

Return type:

PYQT_SIGNAL

digitizingFillColor() QColor

Returns fill color for rubber bands (from global settings)

digitizingFinished

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Parameters:
  • name (str = ...) –

  • revision (int = ...) –

  • arguments (Sequence = ...) –

Return type:

PYQT_SIGNAL

digitizingStrokeColor() QColor

Returns stroke color for rubber bands (from global settings)

digitizingStrokeWidth() int

Returns stroke width for rubber bands (from global settings)

disconnectNotify(self, QMetaMethod)
featureDigitized()
fetchLayerPoint(self, match: QgsPointLocator.Match, layerPoint: QgsPoint) int

Fetches the original point from the source layer if it has the same CRS as the current layer. If topological editing is activated, the points are projected to the current layer CRS.

Returns:

0 in case of success 1 if not applicable (CRS mismatch / invalid layer) 2 in case of failure

isCapturing(self) bool

Are we currently capturing?

Returns:

Is the tool in capture mode?

isSignalConnected(self, QMetaMethod) bool
keyPressEvent(self, e: QKeyEvent)
Parameters:

e (QKeyEvent) –

nextPoint(self, mapPoint: QgsPoint, layerPoint: QgsPoint) int

Converts a map point to layer coordinates

Parameters:

mapPoint – the point in map coordinates

param[in,out] layerPoint the point in layer coordinates

Returns:

0 in case of success 1 if the current layer is None 2 if the transformation failed

nextPoint(self, p: QPoint, layerPoint: QgsPoint, mapPoint: QgsPoint) -> int Converts a point to map coordinates and layer coordinates

Parameters:

p – the input point

param[in,out] layerPoint the point in layer coordinates param[in,out] mapPoint the point in map coordinates

Returns:

0 in case of success 1 if the current layer is None or not a vector layer 2 if the transformation failed

notifyNotEditableLayer(self)

Display a timed message bar noting the active vector layer is not editable.

notifyNotVectorLayer(self)

Display a timed message bar noting the active layer is not vector.

points(self) List[QgsPointXY]

List of digitized points

Returns:

List of points

Deprecated since version QGIS: 3.12 - will be removed in QGIS 4.0. Use the variant returns QgsPoint objects instead of QgsPointXY.

pointsZM(self) List[QgsPoint]

List of digitized points

Returns:

List of points

New in version 3.12.

receivers(self, PYQT_SIGNAL) int
sender(self) QObject
senderSignalIndex(self) int
setAdvancedDigitizingAllowed(self, allowed: bool)

Sets whether functionality of advanced digitizing dock widget is currently allowed. This method is protected because it should be a decision of the map tool and not from elsewhere. sa isAdvancedDigitizingAllowed()

setAutoSnapEnabled(self, enabled: bool)

Sets whether mouse events (press/move/release) should automatically try to snap mouse position This method is protected because it should be a decision of the map tool and not from elsewhere. sa isAutoSnapEnabled()

setCheckGeometryType(self, checkGeometryType: bool)

Check if CaptureMode matches layer type. Default is True.

Parameters:

checkGeometryType (bool) –

setLayer(self, vl: QgsMapLayer)

Change the layer edited by the map tool

Parameters:

vl (QgsMapLayer) – the layer to be edited by the map tool

setPoints(self, pointList: Iterable[QgsPointXY])

Set the points on which to work

Parameters:

pointList – A list of points

Deprecated since version QGIS: 3.12 - will be removed in QGIS 4.0. Use the variant which accepts QgsPoint objects instead of QgsPointXY.

setPoints(self, pointList: Iterable[QgsPoint]) Set the points on which to work

Parameters:

pointList – A list of points

New in version 3.12.

setToolName(self, name: str)

Sets the tool’s name.

See also

toolName()

New in version 3.20.

size(self) int

Number of points digitized

Returns:

Number of points

startCapturing(self)

Start capturing

stopCapturing(self)

Stop capturing

supportsTechnique(self, technique: Qgis.CaptureTechnique) bool
Parameters:

technique (Qgis.CaptureTechnique) –

Return type:

bool

timerEvent(self, QTimerEvent)
toCanvasCoordinates(self, point: QgsPointXY) QPoint

Transforms a point from map coordinates to screen coordinates.

toLayerCoordinates(self, layer: QgsMapLayer, point: QPoint) QgsPointXY

Transforms a point from screen coordinates to layer coordinates.

toLayerCoordinates(self, layer: QgsMapLayer, point: QgsPointXY) -> QgsPointXY Transforms a point from map coordinates to layer coordinates.

toLayerCoordinates(self, layer: QgsMapLayer, rect: QgsRectangle) -> QgsRectangle Transforms a rect from map coordinates to layer coordinates.

toLayerCoordinatesV2(self, layer: QgsMapLayer, point: QgsPoint) QgsPoint

Transforms a point from map coordinates to layer coordinates.

Note

This method is available in the Python bindings as toLayerCoordinatesV2.

toMapCoordinates(self, point: QPoint) QgsPointXY

Transforms a point from screen coordinates to map coordinates.

toMapCoordinates(self, layer: QgsMapLayer, point: QgsPointXY) -> QgsPointXY Transforms a point from layer coordinates to map coordinates (which is different in case reprojection is used).

toMapCoordinatesV2(self, layer: QgsMapLayer, point: QgsPoint) QgsPoint

Transforms a point from layer coordinates to map coordinates (which is different in case reprojection is used).

Note

This method is available in the Python bindings as toMapCoordinatesV2.

undo(self, isAutoRepeat: bool = False)

Removes the last vertex from mRubberBand and mCaptureList.

Since QGIS 3.20, if isAutoRepeat is set to True then the undo operation will be treated as a auto repeated undo as if the user has held down the undo key for an extended period of time.