QGIS API Documentation  3.11.0-Master (81e645902f)
Classes | Public Types | Public Slots | Signals | 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, AllLayers = VectorLayer | RasterLayer | MeshLayer }
 
- Public Types inherited from QgsMapTool
enum  Flag { Transient = 1 << 1, EditTool = 1 << 2, AllowZoomRect = 1 << 3 }
 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::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 (int x, int y, const QList< QgsMapLayer *> &layerList=QList< QgsMapLayer *>(), IdentifyMode mode=DefaultQgsSetting)
 Performs the identification. More...
 
QList< QgsMapToolIdentify::IdentifyResultidentify (int x, int y, IdentifyMode mode, LayerType layerType=AllLayers)
 Performs the identification. More...
 
QList< QgsMapToolIdentify::IdentifyResultidentify (const QgsGeometry &geometry, IdentifyMode mode, LayerType layerType)
 Performs identification based on a geometry (in map coordinates) More...
 
QList< QgsMapToolIdentify::IdentifyResultidentify (const QgsGeometry &geometry, IdentifyMode mode, const QList< QgsMapLayer *> &layerList, LayerType layerType)
 Performs identification based on a geometry (in map coordinates) 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 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...
 
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...
 

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)
 Performs the identification. More...
 
bool identifyLayer (QList< QgsMapToolIdentify::IdentifyResult > *results, QgsMapLayer *layer, const QgsPointXY &point, const QgsRectangle &viewExtent, double mapUnitsPerPixel, QgsMapToolIdentify::LayerType layerType=AllLayers)
 Call the right method depending on layer type. More...
 
bool identifyMeshLayer (QList< QgsMapToolIdentify::IdentifyResult > *results, QgsMeshLayer *layer, const QgsPointXY &point)
 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)
 
bool identifyVectorLayer (QList< QgsMapToolIdentify::IdentifyResult > *results, QgsVectorLayer *layer, const QgsPointXY &point)
 
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 map canvas as a parameter More...
 
QPoint toCanvasCoordinates (const QgsPointXY &point) const
 transformation from map coordinates to screen coordinates More...
 
QgsPointXY toLayerCoordinates (const QgsMapLayer *layer, QPoint point)
 transformation from screen coordinates to layer's coordinates More...
 
QgsPointXY toLayerCoordinates (const QgsMapLayer *layer, const QgsPointXY &point)
 transformation from map coordinates to layer's coordinates More...
 
QgsRectangle toLayerCoordinates (const QgsMapLayer *layer, const QgsRectangle &rect)
 trnasformation of the rect from map coordinates to layer's coordinates More...
 
QgsPointXY toMapCoordinates (QPoint point)
 transformation from screen coordinates to map coordinates More...
 
QgsPointXY toMapCoordinates (const QgsMapLayer *layer, const QgsPointXY &point)
 transformation from layer's coordinates to map coordinates (which is different in case reprojection is used) More...
 
QgsPoint toMapCoordinates (const QgsMapLayer *layer, const QgsPoint &point)
 transformation from layer's coordinates to map coordinates (which is different in case reprojection is used) More...
 

Protected Attributes

QgsIdentifyMenumIdentifyMenu = nullptr
 
- Protected Attributes inherited from QgsMapTool
QAction * mAction = nullptr
 optionally map tool can have pointer to action which will be used to set that action as active More...
 
QAbstractButton * mButton = nullptr
 optionally map tool can have pointer to a button which will be used to set that action as active More...
 
QgsMapCanvasmCanvas = nullptr
 pointer to map canvas More...
 
QCursor mCursor
 cursor used in map tool More...
 
QString mToolName
 translated name of the map tool More...
 

Additional Inherited Members

- 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...
 

Detailed Description

Map tool for identifying features in layers.

after selecting a point, performs the identification:

Definition at line 46 of file qgsmaptoolidentify.h.

Member Enumeration Documentation

◆ IdentifyMode

Enumerator
DefaultQgsSetting 
ActiveLayer 
TopDownStopAtFirst 
TopDownAll 
LayerSelection 

Definition at line 52 of file qgsmaptoolidentify.h.

◆ Type

Enumerator
VectorLayer 
RasterLayer 
MeshLayer 
Since
QGIS 3.6
AllLayers 

Definition at line 62 of file qgsmaptoolidentify.h.

Constructor & Destructor Documentation

◆ QgsMapToolIdentify()

QgsMapToolIdentify::QgsMapToolIdentify ( QgsMapCanvas canvas)

constructor

Definition at line 55 of file qgsmaptoolidentify.cpp.

◆ ~QgsMapToolIdentify()

QgsMapToolIdentify::~QgsMapToolIdentify ( )
override

Definition at line 64 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 194 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 69 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 74 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 79 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 199 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 317 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 100 of file qgsmaptoolidentify.h.

◆ formatChanged

void QgsMapToolIdentify::formatChanged ( QgsRasterLayer layer)
slot

Definition at line 926 of file qgsmaptoolidentify.cpp.

◆ identify() [1/5]

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

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.
Returns
a list of IdentifyResult

Definition at line 84 of file qgsmaptoolidentify.cpp.

◆ identify() [2/5]

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

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.
Returns
a list of IdentifyResult

Definition at line 89 of file qgsmaptoolidentify.cpp.

◆ identify() [3/5]

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

Performs identification based on a geometry (in map coordinates)

Definition at line 99 of file qgsmaptoolidentify.cpp.

◆ identify() [4/5]

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

Performs identification based on a geometry (in map coordinates)

Definition at line 104 of file qgsmaptoolidentify.cpp.

◆ identify() [5/5]

QList< QgsMapToolIdentify::IdentifyResult > QgsMapToolIdentify::identify ( int  x,
int  y,
IdentifyMode  mode,
const QList< QgsMapLayer *> &  layerList,
LayerType  layerType = AllLayers 
)
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).
Returns
a list of IdentifyResult

Definition at line 94 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 
)
protected

Call the right method depending on layer type.

Definition at line 204 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 138 of file qgsmaptoolidentify.h.

◆ identifyMeshLayer()

bool QgsMapToolIdentify::identifyMeshLayer ( QList< QgsMapToolIdentify::IdentifyResult > *  results,
QgsMeshLayer layer,
const QgsPointXY point 
)
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 240 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 
)
protected

Definition at line 681 of file qgsmaptoolidentify.cpp.

◆ identifyVectorLayer()

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

Definition at line 229 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 189 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 184 of file qgsmaptoolidentify.cpp.

Member Data Documentation

◆ mIdentifyMenu

QgsIdentifyMenu* QgsMapToolIdentify::mIdentifyMenu = nullptr
protected

Definition at line 163 of file qgsmaptoolidentify.h.


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