QGIS API Documentation  3.21.0-Master (402cf1129e)
Classes | Public Types | Public Slots | Signals | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
QgsMapToolIdentify Class Reference

Map tool for identifying features in layers. More...

#include <qgsmaptoolidentify.h>

Inheritance diagram for QgsMapToolIdentify:
Inheritance graph
[legend]

Classes

struct  IdentifyResult
 

Public Types

enum  IdentifyMode {
  DefaultQgsSetting = -1 , ActiveLayer , TopDownStopAtFirst , TopDownAll ,
  LayerSelection
}
 
enum  Type {
  VectorLayer = 1 , RasterLayer = 2 , MeshLayer = 4 , VectorTileLayer = 8 ,
  PointCloudLayer = 16 , AllLayers = VectorLayer | RasterLayer | MeshLayer | VectorTileLayer | PointCloudLayer
}
 
- Public Types inherited from QgsMapTool
enum  Flag { Transient = 1 << 1 , EditTool = 1 << 2 , AllowZoomRect = 1 << 3 , ShowContextMenu = 1 << 4 }
 Enumeration of flags that adjust the way the map tool operates. More...
 

Public Slots

void formatChanged (QgsRasterLayer *layer)
 

Signals

void changedRasterResults (QList< QgsMapToolIdentify::IdentifyResult > &)
 
void identifyMessage (const QString &)
 
void identifyProgress (int, int)
 
- Signals inherited from QgsMapTool
void activated ()
 signal emitted once the map tool is activated More...
 
void deactivated ()
 signal emitted once the map tool is deactivated More...
 
void messageDiscarded ()
 emit signal to clear previous message More...
 
void messageEmitted (const QString &message, Qgis::MessageLevel=Qgis::MessageLevel::Info)
 emit a message More...
 

Public Member Functions

 QgsMapToolIdentify (QgsMapCanvas *canvas)
 constructor More...
 
 ~QgsMapToolIdentify () override
 
void activate () override
 called when set as currently active map tool More...
 
void canvasMoveEvent (QgsMapMouseEvent *e) override
 Mouse move event for overriding. Default implementation does nothing. More...
 
void canvasPressEvent (QgsMapMouseEvent *e) override
 Mouse press event for overriding. Default implementation does nothing. More...
 
void canvasReleaseEvent (QgsMapMouseEvent *e) override
 Mouse release event for overriding. Default implementation does nothing. More...
 
void deactivate () override
 called when map tool is being deactivated More...
 
Flags flags () const override
 Returns the flags for the map tool. More...
 
QList< QgsMapToolIdentify::IdentifyResultidentify (const QgsGeometry &geometry, IdentifyMode mode, const QList< QgsMapLayer * > &layerList, LayerType layerType, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
 Performs identification based on a geometry (in map coordinates) More...
 
QList< QgsMapToolIdentify::IdentifyResultidentify (const QgsGeometry &geometry, IdentifyMode mode, LayerType layerType, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
 Performs identification based on a geometry (in map coordinates) More...
 
QList< QgsMapToolIdentify::IdentifyResultidentify (int x, int y, const QList< QgsMapLayer * > &layerList=QList< QgsMapLayer * >(), IdentifyMode mode=DefaultQgsSetting, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
 Performs the identification. More...
 
QList< QgsMapToolIdentify::IdentifyResultidentify (int x, int y, IdentifyMode mode, LayerType layerType=AllLayers, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
 Performs the identification. More...
 
QgsIdentifyMenuidentifyMenu ()
 Returns a pointer to the identify menu which will be used in layer selection mode this menu can also be customized. More...
 
- Public Member Functions inherited from QgsMapTool
 ~QgsMapTool () override
 
QAction * action ()
 Returns associated action with map tool or nullptr if no action is associated. More...
 
QAbstractButton * button ()
 Returns associated button with map tool or nullptr if no button is associated. More...
 
QgsMapCanvascanvas () const
 returns pointer to the tool's map canvas More...
 
virtual void canvasDoubleClickEvent (QgsMapMouseEvent *e)
 Mouse double-click event for overriding. Default implementation does nothing. More...
 
virtual bool canvasToolTipEvent (QHelpEvent *e)
 Tooltip event for overriding. More...
 
virtual void clean ()
 convenient method to clean members More...
 
virtual bool gestureEvent (QGestureEvent *e)
 gesture event for overriding. Default implementation does nothing. More...
 
bool isActive () const
 Returns if the current map tool active on the map canvas. More...
 
virtual void keyPressEvent (QKeyEvent *e)
 Key event for overriding. Default implementation does nothing. More...
 
virtual void keyReleaseEvent (QKeyEvent *e)
 Key event for overriding. Default implementation does nothing. More...
 
virtual void populateContextMenu (QMenu *menu)
 Allows the tool to populate and customize the given menu, prior to showing it in response to a right-mouse button click. More...
 
virtual bool populateContextMenuWithEvent (QMenu *menu, QgsMapMouseEvent *event)
 Allows the tool to populate and customize the given menu, prior to showing it in response to a right-mouse button click. More...
 
void setAction (QAction *action)
 Use this to associate a QAction to this maptool. More...
 
void setButton (QAbstractButton *button)
 Use this to associate a button to this maptool. More...
 
virtual void setCursor (const QCursor &cursor)
 Sets a user defined cursor. More...
 
QString toolName ()
 Emit map tool changed with the old tool. More...
 
virtual void wheelEvent (QWheelEvent *e)
 Mouse wheel event for overriding. Default implementation does nothing. More...
 

Static Public Member Functions

static void fromPointCloudIdentificationToIdentifyResults (QgsPointCloudLayer *layer, const QVector< QVariantMap > &identified, QList< QgsMapToolIdentify::IdentifyResult > &results)
 Converts point cloud identification results from variant maps to QgsMapToolIdentify::IdentifyResult and apply some formatting. More...
 
- Static Public Member Functions inherited from QgsMapTool
static double searchRadiusMM ()
 Gets search radius in mm. More...
 
static double searchRadiusMU (const QgsRenderContext &context)
 Gets search radius in map units for given context. More...
 
static double searchRadiusMU (QgsMapCanvas *canvas)
 Gets search radius in map units for given canvas. More...
 

Protected Member Functions

QMap< QString, QString > derivedAttributesForPoint (const QgsPoint &point)
 Returns derived attributes map for a clicked point in map coordinates. May be 2D or 3D point. More...
 
QList< QgsMapToolIdentify::IdentifyResultidentify (int x, int y, IdentifyMode mode, const QList< QgsMapLayer * > &layerList, LayerType layerType=AllLayers, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
 Performs the identification. More...
 
bool identifyLayer (QList< QgsMapToolIdentify::IdentifyResult > *results, QgsMapLayer *layer, const QgsPointXY &point, const QgsRectangle &viewExtent, double mapUnitsPerPixel, QgsMapToolIdentify::LayerType layerType=AllLayers, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
 Call the right method depending on layer type. More...
 
bool identifyMeshLayer (QList< QgsMapToolIdentify::IdentifyResult > *results, QgsMeshLayer *layer, const QgsPointXY &point, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
 Identifies data from active scalar and vector dataset from the mesh layer. More...
 
bool identifyRasterLayer (QList< QgsMapToolIdentify::IdentifyResult > *results, QgsRasterLayer *layer, QgsPointXY point, const QgsRectangle &viewExtent, double mapUnitsPerPixel, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
 Performs the identification against a given raster layer. More...
 
bool identifyVectorLayer (QList< QgsMapToolIdentify::IdentifyResult > *results, QgsVectorLayer *layer, const QgsPointXY &point, const QgsIdentifyContext &identifyContext=QgsIdentifyContext())
 Performs the identification against a given vector layer. More...
 
void restoreCanvasPropertiesOverrides ()
 Clears canvas properties overrides previously set with setCanvasPropertiesOverrides() More...
 
void setCanvasPropertiesOverrides (double searchRadiusMapUnits)
 Overrides some map canvas properties inside the map tool for the upcoming identify requests. More...
 
- Protected Member Functions inherited from QgsMapTool
 QgsMapTool (QgsMapCanvas *canvas)
 Constructor takes a map canvas as a parameter. More...
 
void setToolName (const QString &name)
 Sets the tool's name. More...
 
QPoint toCanvasCoordinates (const QgsPointXY &point) const
 Transforms a point from map coordinates to screen coordinates. More...
 
QgsPointXY toLayerCoordinates (const QgsMapLayer *layer, const QgsPointXY &point)
 Transforms a point from map coordinates to layer coordinates. More...
 
QgsRectangle toLayerCoordinates (const QgsMapLayer *layer, const QgsRectangle &rect)
 Transforms a rect from map coordinates to layer coordinates. More...
 
QgsPointXY toLayerCoordinates (const QgsMapLayer *layer, QPoint point)
 Transforms a point from screen coordinates to layer coordinates. More...
 
QgsPoint toMapCoordinates (const QgsMapLayer *layer, const QgsPoint &point)
 Transforms a point from layer coordinates to map coordinates (which is different in case reprojection is used). More...
 
QgsPointXY toMapCoordinates (const QgsMapLayer *layer, const QgsPointXY &point)
 Transforms a point from layer coordinates to map coordinates (which is different in case reprojection is used). More...
 
QgsPointXY toMapCoordinates (QPoint point)
 Transforms a point from screen coordinates to map coordinates. More...
 

Protected Attributes

QgsIdentifyMenumIdentifyMenu = nullptr
 
- Protected Attributes inherited from QgsMapTool
QAction * mAction = nullptr
 Optional pointer to an action that will be checked on map tool activation and unchecked on map tool deactivation. More...
 
QAbstractButton * mButton = nullptr
 Optional pointer to a button that will be checked on map tool activation and unchecked on map tool deactivation. More...
 
QgsMapCanvasmCanvas = nullptr
 The pointer to the map canvas. More...
 
QCursor mCursor
 The cursor used in the map tool. More...
 
QString mToolName
 The translated name of the map tool. More...
 

Detailed Description

Map tool for identifying features in layers.

after selecting a point, performs the identification:

Definition at line 51 of file qgsmaptoolidentify.h.

Member Enumeration Documentation

◆ IdentifyMode

Enumerator
DefaultQgsSetting 
ActiveLayer 
TopDownStopAtFirst 
TopDownAll 
LayerSelection 

Definition at line 57 of file qgsmaptoolidentify.h.

◆ Type

Enumerator
VectorLayer 
RasterLayer 
MeshLayer 
Since
QGIS 3.6
VectorTileLayer 
Since
QGIS 3.14
PointCloudLayer 
Since
QGIS 3.18
AllLayers 

Definition at line 67 of file qgsmaptoolidentify.h.

Constructor & Destructor Documentation

◆ QgsMapToolIdentify()

QgsMapToolIdentify::QgsMapToolIdentify ( QgsMapCanvas canvas)

constructor

Definition at line 67 of file qgsmaptoolidentify.cpp.

◆ ~QgsMapToolIdentify()

QgsMapToolIdentify::~QgsMapToolIdentify ( )
override

Definition at line 76 of file qgsmaptoolidentify.cpp.

Member Function Documentation

◆ activate()

void QgsMapToolIdentify::activate ( )
overridevirtual

called when set as currently active map tool

Reimplemented from QgsMapTool.

Definition at line 208 of file qgsmaptoolidentify.cpp.

◆ canvasMoveEvent()

void QgsMapToolIdentify::canvasMoveEvent ( QgsMapMouseEvent e)
overridevirtual

Mouse move event for overriding. Default implementation does nothing.

Reimplemented from QgsMapTool.

Definition at line 81 of file qgsmaptoolidentify.cpp.

◆ canvasPressEvent()

void QgsMapToolIdentify::canvasPressEvent ( QgsMapMouseEvent e)
overridevirtual

Mouse press event for overriding. Default implementation does nothing.

Reimplemented from QgsMapTool.

Definition at line 86 of file qgsmaptoolidentify.cpp.

◆ canvasReleaseEvent()

void QgsMapToolIdentify::canvasReleaseEvent ( QgsMapMouseEvent e)
overridevirtual

Mouse release event for overriding. Default implementation does nothing.

Reimplemented from QgsMapTool.

Reimplemented in QgsMapToolIdentifyFeature.

Definition at line 91 of file qgsmaptoolidentify.cpp.

◆ changedRasterResults

void QgsMapToolIdentify::changedRasterResults ( QList< QgsMapToolIdentify::IdentifyResult > &  )
signal

◆ deactivate()

void QgsMapToolIdentify::deactivate ( )
overridevirtual

called when map tool is being deactivated

Reimplemented from QgsMapTool.

Definition at line 213 of file qgsmaptoolidentify.cpp.

◆ derivedAttributesForPoint()

QMap< QString, QString > QgsMapToolIdentify::derivedAttributesForPoint ( const QgsPoint point)
protected

Returns derived attributes map for a clicked point in map coordinates. May be 2D or 3D point.

Definition at line 530 of file qgsmaptoolidentify.cpp.

◆ flags()

Flags QgsMapToolIdentify::flags ( ) const
inlineoverridevirtual

Returns the flags for the map tool.

Since
QGIS 2.16

Reimplemented from QgsMapTool.

Definition at line 107 of file qgsmaptoolidentify.h.

◆ formatChanged

void QgsMapToolIdentify::formatChanged ( QgsRasterLayer layer)
slot

Definition at line 1203 of file qgsmaptoolidentify.cpp.

◆ fromPointCloudIdentificationToIdentifyResults()

void QgsMapToolIdentify::fromPointCloudIdentificationToIdentifyResults ( QgsPointCloudLayer layer,
const QVector< QVariantMap > &  identified,
QList< QgsMapToolIdentify::IdentifyResult > &  results 
)
static

Converts point cloud identification results from variant maps to QgsMapToolIdentify::IdentifyResult and apply some formatting.

Note
: the converted variant maps are pushed at the back of results without cleaning what's in it previously
Since
QGIS 3.18

Definition at line 1212 of file qgsmaptoolidentify.cpp.

◆ identify() [1/5]

QList< QgsMapToolIdentify::IdentifyResult > QgsMapToolIdentify::identify ( const QgsGeometry geometry,
IdentifyMode  mode,
const QList< QgsMapLayer * > &  layerList,
LayerType  layerType,
const QgsIdentifyContext identifyContext = QgsIdentifyContext() 
)

Performs identification based on a geometry (in map coordinates)

Definition at line 116 of file qgsmaptoolidentify.cpp.

◆ identify() [2/5]

QList< QgsMapToolIdentify::IdentifyResult > QgsMapToolIdentify::identify ( const QgsGeometry geometry,
IdentifyMode  mode,
LayerType  layerType,
const QgsIdentifyContext identifyContext = QgsIdentifyContext() 
)

Performs identification based on a geometry (in map coordinates)

Definition at line 111 of file qgsmaptoolidentify.cpp.

◆ identify() [3/5]

QList< QgsMapToolIdentify::IdentifyResult > QgsMapToolIdentify::identify ( int  x,
int  y,
const QList< QgsMapLayer * > &  layerList = QList<QgsMapLayer *>(),
IdentifyMode  mode = DefaultQgsSetting,
const QgsIdentifyContext identifyContext = QgsIdentifyContext() 
)

Performs the identification.

Parameters
xx coordinates of mouseEvent
yy coordinates of mouseEvent
layerListPerforms the identification within the given list of layers. Default value is an empty list, i.e. uses all the layers.
modeIdentification mode. Can use QGIS default settings or a defined mode. Default mode is DefaultQgsSetting.
identifyContextIdentify context object.
Returns
a list of IdentifyResult

Definition at line 96 of file qgsmaptoolidentify.cpp.

◆ identify() [4/5]

QList< QgsMapToolIdentify::IdentifyResult > QgsMapToolIdentify::identify ( int  x,
int  y,
IdentifyMode  mode,
const QList< QgsMapLayer * > &  layerList,
LayerType  layerType = AllLayers,
const QgsIdentifyContext identifyContext = QgsIdentifyContext() 
)
protected

Performs the identification.

To avoid being forced to specify IdentifyMode with a list of layers this has been made private and two publics methods are offered

Parameters
xx coordinates of mouseEvent
yy coordinates of mouseEvent
modeIdentification mode. Can use QGIS default settings or a defined mode.
layerListPerforms the identification within the given list of layers.
layerTypeOnly performs identification in a certain type of layers (raster, vector, mesh).
identifyContextIdentify context object.
Returns
a list of IdentifyResult

Definition at line 106 of file qgsmaptoolidentify.cpp.

◆ identify() [5/5]

QList< QgsMapToolIdentify::IdentifyResult > QgsMapToolIdentify::identify ( int  x,
int  y,
IdentifyMode  mode,
LayerType  layerType = AllLayers,
const QgsIdentifyContext identifyContext = QgsIdentifyContext() 
)

Performs the identification.

To avoid being forced to specify IdentifyMode with a list of layers this has been made private and two publics methods are offered

Parameters
xx coordinates of mouseEvent
yy coordinates of mouseEvent
modeIdentification mode. Can use QGIS default settings or a defined mode.
layerTypeOnly performs identification in a certain type of layers (raster, vector, mesh). Default value is AllLayers.
identifyContextIdentify context object.
Returns
a list of IdentifyResult

Definition at line 101 of file qgsmaptoolidentify.cpp.

◆ identifyLayer()

bool QgsMapToolIdentify::identifyLayer ( QList< QgsMapToolIdentify::IdentifyResult > *  results,
QgsMapLayer layer,
const QgsPointXY point,
const QgsRectangle viewExtent,
double  mapUnitsPerPixel,
QgsMapToolIdentify::LayerType  layerType = AllLayers,
const QgsIdentifyContext identifyContext = QgsIdentifyContext() 
)
protected

Call the right method depending on layer type.

Definition at line 218 of file qgsmaptoolidentify.cpp.

◆ identifyMenu()

QgsIdentifyMenu* QgsMapToolIdentify::identifyMenu ( )
inline

Returns a pointer to the identify menu which will be used in layer selection mode this menu can also be customized.

Definition at line 148 of file qgsmaptoolidentify.h.

◆ identifyMeshLayer()

bool QgsMapToolIdentify::identifyMeshLayer ( QList< QgsMapToolIdentify::IdentifyResult > *  results,
QgsMeshLayer layer,
const QgsPointXY point,
const QgsIdentifyContext identifyContext = QgsIdentifyContext() 
)
protected

Identifies data from active scalar and vector dataset from the mesh layer.

Works only if layer was already rendered (triangular mesh is created)

Since
QGIS 3.6

Definition at line 262 of file qgsmaptoolidentify.cpp.

◆ identifyMessage

void QgsMapToolIdentify::identifyMessage ( const QString &  )
signal

◆ identifyProgress

void QgsMapToolIdentify::identifyProgress ( int  ,
int   
)
signal

◆ identifyRasterLayer()

bool QgsMapToolIdentify::identifyRasterLayer ( QList< QgsMapToolIdentify::IdentifyResult > *  results,
QgsRasterLayer layer,
QgsPointXY  point,
const QgsRectangle viewExtent,
double  mapUnitsPerPixel,
const QgsIdentifyContext identifyContext = QgsIdentifyContext() 
)
protected

Performs the identification against a given raster layer.

Parameters
resultslist of identify results
layerraster layer to identify from
pointpoint coordinate to identify
viewExtentview extent
mapUnitsPerPixelmap units per pixel value
identifyContextidentify context object

Definition at line 950 of file qgsmaptoolidentify.cpp.

◆ identifyVectorLayer()

bool QgsMapToolIdentify::identifyVectorLayer ( QList< QgsMapToolIdentify::IdentifyResult > *  results,
QgsVectorLayer layer,
const QgsPointXY point,
const QgsIdentifyContext identifyContext = QgsIdentifyContext() 
)
protected

Performs the identification against a given vector layer.

Parameters
resultslist of identify results
layerraster layer to identify from
pointpoint coordinate to identify
identifyContextidentify context object

Definition at line 251 of file qgsmaptoolidentify.cpp.

◆ restoreCanvasPropertiesOverrides()

void QgsMapToolIdentify::restoreCanvasPropertiesOverrides ( )
protected

Clears canvas properties overrides previously set with setCanvasPropertiesOverrides()

See also
setCanvasPropertiesOverrides()
Since
QGIS 3.4

Definition at line 203 of file qgsmaptoolidentify.cpp.

◆ setCanvasPropertiesOverrides()

void QgsMapToolIdentify::setCanvasPropertiesOverrides ( double  searchRadiusMapUnits)
protected

Overrides some map canvas properties inside the map tool for the upcoming identify requests.

This is useful when the identification is triggered by some other piece of GUI like a 3D map view and some properties like search radius need to be adjusted so that identification returns correct results. Currently only search radius may be overridden.

When the custom identification has finished, restoreCanvasPropertiesOverrides() should be called to erase any overrides.

See also
restoreCanvasPropertiesOverrides()
Since
QGIS 3.4

Definition at line 198 of file qgsmaptoolidentify.cpp.

Member Data Documentation

◆ mIdentifyMenu

QgsIdentifyMenu* QgsMapToolIdentify::mIdentifyMenu = nullptr
protected

Definition at line 181 of file qgsmaptoolidentify.h.


The documentation for this class was generated from the following files: