QGIS API Documentation  2.2.0-Valmiera
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Classes | Public Types | Public Slots | Signals | Public Member Functions | Protected Member Functions | Private Slots | Private Member Functions | Private 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]
Collaboration diagram for QgsMapToolIdentify:
Collaboration graph
[legend]

Classes

struct  IdentifyResult

Public Types

enum  IdentifyMode {
  DefaultQgsSetting = -1, ActiveLayer, TopDownStopAtFirst, TopDownAll,
  LayerSelection
}
enum  LayerType { AllLayers = -1, VectorLayer, RasterLayer }

Public Slots

void formatChanged (QgsRasterLayer *layer)

Signals

void identifyProgress (int, int)
void identifyMessage (QString)
void changedRasterResults (QList< IdentifyResult > &)

Public Member Functions

 QgsMapToolIdentify (QgsMapCanvas *canvas)
 constructor
virtual ~QgsMapToolIdentify ()
virtual void canvasMoveEvent (QMouseEvent *e)
 Overridden mouse move event.
virtual void canvasPressEvent (QMouseEvent *e)
 Overridden mouse press event.
virtual void canvasReleaseEvent (QMouseEvent *e)
 Overridden mouse release event.
virtual void activate ()
 called when set as currently active map tool
virtual void deactivate ()
 called when map tool is being deactivated
QList< IdentifyResultidentify (int x, int y, QList< QgsMapLayer * > layerList=QList< QgsMapLayer * >(), IdentifyMode mode=DefaultQgsSetting)
 Performs the identification.
QList< IdentifyResultidentify (int x, int y, IdentifyMode mode, LayerType layerType=AllLayers)
 Performs the identification.
- Public Member Functions inherited from QgsMapTool
virtual ~QgsMapTool ()
 virtual destructor
virtual void canvasDoubleClickEvent (QMouseEvent *e)
 Mouse double click event for overriding. Default implementation does nothing.
virtual void wheelEvent (QWheelEvent *e)
 Mouse wheel event for overriding.
virtual void keyPressEvent (QKeyEvent *e)
 Key event for overriding. Default implementation does nothing.
virtual void keyReleaseEvent (QKeyEvent *e)
 Key event for overriding.
virtual void renderComplete ()
 Called when rendering has finished. Default implementation does nothing.
void setAction (QAction *action)
 Use this to associate a QAction to this maptool.
QAction * action ()
 Return associated action with map tool or NULL if no action is associated.
void setButton (QAbstractButton *button)
 Use this to associate a button to this maptool.
QAbstractButton * button ()
 Return associated button with map tool or NULL if no button is associated.
virtual void setCursor (QCursor cursor)
 Set a user defined cursor.
virtual bool isTransient ()
 Check whether this MapTool performs a zoom or pan operation.
virtual bool isEditTool ()
 Check whether this MapTool performs an edit operation.
QgsMapCanvascanvas ()
 returns pointer to the tool's map canvas

Protected Member Functions

void deleteRubberBands ()
 rubber bands for layer select mode
- Protected Member Functions inherited from QgsMapTool
 QgsMapTool (QgsMapCanvas *canvas)
 constructor takes map canvas as a parameter
QgsPoint toMapCoordinates (const QPoint &point)
 transformation from screen coordinates to map coordinates
QgsPoint toLayerCoordinates (QgsMapLayer *layer, const QPoint &point)
 transformation from screen coordinates to layer's coordinates
QgsPoint toLayerCoordinates (QgsMapLayer *layer, const QgsPoint &point)
 transformation from map coordinates to layer's coordinates
QgsPoint toMapCoordinates (QgsMapLayer *layer, const QgsPoint &point)
 transformation from layer's coordinates to map coordinates (which is different in case reprojection is used)
QgsRectangle toLayerCoordinates (QgsMapLayer *layer, const QgsRectangle &rect)
 trnasformation of the rect from map coordinates to layer's coordinates
QPoint toCanvasCoordinates (const QgsPoint &point)
 transformation from map coordinates to screen coordinates

Private Slots

void handleMenuHover ()
 menu for layer selection

Private Member Functions

QList< IdentifyResultidentify (int x, int y, IdentifyMode mode, QList< QgsMapLayer * > layerList, LayerType layerType=AllLayers)
 Performs the identification.
bool identifyLayer (QList< IdentifyResult > *results, QgsMapLayer *layer, QgsPoint point, QgsRectangle viewExtent, double mapUnitsPerPixel, LayerType layerType=AllLayers)
 call the right method depending on layer type
bool identifyRasterLayer (QList< IdentifyResult > *results, QgsRasterLayer *layer, QgsPoint point, QgsRectangle viewExtent, double mapUnitsPerPixel)
bool identifyVectorLayer (QList< IdentifyResult > *results, QgsVectorLayer *layer, QgsPoint point)
virtual void convertMeasurement (QgsDistanceArea &calc, double &measure, QGis::UnitType &u, bool isArea)
 Private helper.
virtual QGis::UnitType displayUnits ()
 Transforms the measurements of derived attributes in the desired units.
QMap< QString, QString > featureDerivedAttributes (QgsFeature *feature, QgsMapLayer *layer)

Private Attributes

QMap< QgsMapLayer *, QList
< IdentifyResult > > 
mLayerIdResults
 layer id map for layer select mode
QList< QgsHighlight * > mRubberBands
 rubber bands for layer select mode
QgsPoint mLastPoint
double mLastMapUnitsPerPixel
QgsRectangle mLastExtent

Additional Inherited Members

- Protected Attributes inherited from QgsMapTool
QgsMapCanvasmCanvas
 pointer to map canvas
QCursor mCursor
 cursor used in map tool
QAction * mAction
 optionally map tool can have pointer to action which will be used to set that action as active
QAbstractButton * mButton
 optionally map tool can have pointer to a button which will be used to set that action as active

Detailed Description

Map tool for identifying features in layers.

after selecting a point, performs the identification:

Definition at line 44 of file qgsmaptoolidentify.h.

Member Enumeration Documentation

Enumerator:
DefaultQgsSetting 
ActiveLayer 
TopDownStopAtFirst 
TopDownAll 
LayerSelection 

Definition at line 50 of file qgsmaptoolidentify.h.

Enumerator:
AllLayers 
VectorLayer 
RasterLayer 

Definition at line 59 of file qgsmaptoolidentify.h.

Constructor & Destructor Documentation

QgsMapToolIdentify::QgsMapToolIdentify ( QgsMapCanvas canvas)

constructor

Definition at line 48 of file qgsmaptoolidentify.cpp.

References identify_cursor, and QgsMapTool::mCursor.

QgsMapToolIdentify::~QgsMapToolIdentify ( )
virtual

Definition at line 56 of file qgsmaptoolidentify.cpp.

Member Function Documentation

void QgsMapToolIdentify::activate ( )
virtual

called when set as currently active map tool

Reimplemented from QgsMapTool.

Definition at line 230 of file qgsmaptoolidentify.cpp.

void QgsMapToolIdentify::canvasMoveEvent ( QMouseEvent *  e)
virtual

Overridden mouse move event.

Reimplemented from QgsMapTool.

Definition at line 60 of file qgsmaptoolidentify.cpp.

void QgsMapToolIdentify::canvasPressEvent ( QMouseEvent *  e)
virtual

Overridden mouse press event.

Reimplemented from QgsMapTool.

Definition at line 65 of file qgsmaptoolidentify.cpp.

void QgsMapToolIdentify::canvasReleaseEvent ( QMouseEvent *  e)
virtual

Overridden mouse release event.

Reimplemented from QgsMapTool.

Definition at line 70 of file qgsmaptoolidentify.cpp.

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

Referenced by formatChanged().

void QgsMapToolIdentify::convertMeasurement ( QgsDistanceArea calc,
double &  measure,
QGis::UnitType u,
bool  isArea 
)
privatevirtual
void QgsMapToolIdentify::deactivate ( )
virtual

called when map tool is being deactivated

Reimplemented from QgsMapTool.

Definition at line 235 of file qgsmaptoolidentify.cpp.

void QgsMapToolIdentify::deleteRubberBands ( )
protected

rubber bands for layer select mode

Definition at line 677 of file qgsmaptoolidentify.cpp.

References mRubberBands.

Referenced by handleMenuHover(), and identify().

QGis::UnitType QgsMapToolIdentify::displayUnits ( )
privatevirtual

Transforms the measurements of derived attributes in the desired units.

Definition at line 631 of file qgsmaptoolidentify.cpp.

References QgsMapCanvas::mapUnits(), and QgsMapTool::mCanvas.

Referenced by convertMeasurement().

QMap< QString, QString > QgsMapToolIdentify::featureDerivedAttributes ( QgsFeature feature,
QgsMapLayer layer 
)
private
void QgsMapToolIdentify::formatChanged ( QgsRasterLayer layer)
slot
void QgsMapToolIdentify::handleMenuHover ( )
privateslot
QList< QgsMapToolIdentify::IdentifyResult > QgsMapToolIdentify::identify ( int  x,
int  y,
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 75 of file qgsmaptoolidentify.cpp.

References AllLayers.

Referenced by identify().

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

Performs the identification.

To avoid beeing 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). Default value is AllLayers.
Returns
a list of IdentifyResult

Definition at line 80 of file qgsmaptoolidentify.cpp.

References identify().

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

Performs the identification.

To avoid beeing 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).
Returns
true if identification succeeded and a feature has been found, false otherwise.

Definition at line 85 of file qgsmaptoolidentify.cpp.

References QgsMapTool::action(), ActiveLayer, QgsMapCanvas::currentLayer(), DefaultQgsSetting, deleteRubberBands(), QgsMapCanvas::extent(), QgsVectorLayer::geometryType(), QgsMapCanvas::getCoordinateTransform(), QgsApplication::getThemeIcon(), handleMenuHover(), QgsMapLayer::id(), identify(), identifyLayer(), identifyMessage(), identifyProgress(), QgsMapLayerRegistry::instance(), QgsProject::instance(), QgsMapCanvas::isDrawing(), QgsMapCanvas::layer(), QgsMapCanvas::layerCount(), LayerSelection, QGis::Line, QgsMapLayerRegistry::mapLayer(), QgsMapCanvas::mapUnitsPerPixel(), QgsMapTool::mCanvas, mLastExtent, mLastMapUnitsPerPixel, mLastPoint, mLayerIdResults, QgsMapLayer::name(), QGis::Point, QGis::Polygon, RasterLayer, QgsProject::readListEntry(), QgsMapToPixel::toMapCoordinates(), TopDownAll, TopDownStopAtFirst, and tr.

bool QgsMapToolIdentify::identifyLayer ( QList< IdentifyResult > *  results,
QgsMapLayer layer,
QgsPoint  point,
QgsRectangle  viewExtent,
double  mapUnitsPerPixel,
LayerType  layerType = AllLayers 
)
private

call the right method depending on layer type

Definition at line 240 of file qgsmaptoolidentify.cpp.

References AllLayers, identifyRasterLayer(), identifyVectorLayer(), QgsMapLayer::RasterLayer, RasterLayer, QgsMapLayer::type(), QgsMapLayer::VectorLayer, and VectorLayer.

Referenced by identify().

void QgsMapToolIdentify::identifyMessage ( QString  )
signal

Referenced by identify().

void QgsMapToolIdentify::identifyProgress ( int  ,
int   
)
signal

Referenced by identify().

bool QgsMapToolIdentify::identifyRasterLayer ( QList< IdentifyResult > *  results,
QgsRasterLayer layer,
QgsPoint  point,
QgsRectangle  viewExtent,
double  mapUnitsPerPixel 
)
private

Definition at line 422 of file qgsmaptoolidentify.cpp.

References QgsRasterInterface::capabilities(), QgsRectangle::contains(), QgsDataProvider::crs(), QgsMapLayer::customProperty(), QgsRasterLayer::dataProvider(), QgsMapRenderer::destinationCrs(), QgsRasterIdentifyResult::error(), QgsMapLayer::extent(), featureDerivedAttributes(), QgsFeatureStore::features(), QgsFeatureStore::fields(), QgsRasterInterface::generateBandName(), QgsMapCanvas::hasCrsTransformEnabled(), QgsRectangle::height(), QgsRasterInterface::Identify, QgsRasterDataProvider::identify(), QgsRasterInterface::IdentifyFeature, QgsRaster::IdentifyFormatFeature, QgsRasterDataProvider::identifyFormatFromName(), QgsRaster::IdentifyFormatHtml, QgsRaster::IdentifyFormatText, QgsRasterDataProvider::identifyFormatToCapability(), QgsRaster::IdentifyFormatValue, QgsRasterInterface::IdentifyHtml, QgsRasterInterface::IdentifyText, QgsRasterInterface::IdentifyValue, QgsRasterIdentifyResult::isValid(), QgsMapCanvas::mapRenderer(), QgsMapTool::mCanvas, QgsError::message(), QgsRasterIdentifyResult::mParams, QgsMapLayer::name(), QgsFeatureStore::params(), QgsRasterBlock::printValue(), QgsDebugMsg, QgsRasterIdentifyResult::results(), QgsRectangle::setXMaximum(), QgsRectangle::setXMinimum(), QgsRectangle::setYMaximum(), QgsRectangle::setYMinimum(), QgsRasterLayer::subLayers(), QgsErrorMessage::Text, QgsMapTool::toLayerCoordinates(), QgsPoint::toString(), tr, QgsException::what(), QgsRectangle::width(), QgsPoint::x(), and QgsPoint::y().

Referenced by formatChanged(), and identifyLayer().

bool QgsMapToolIdentify::identifyVectorLayer ( QList< IdentifyResult > *  results,
QgsVectorLayer layer,
QgsPoint  point 
)
private

Member Data Documentation

QgsRectangle QgsMapToolIdentify::mLastExtent
private

Definition at line 173 of file qgsmaptoolidentify.h.

Referenced by formatChanged(), and identify().

double QgsMapToolIdentify::mLastMapUnitsPerPixel
private

Definition at line 171 of file qgsmaptoolidentify.h.

Referenced by formatChanged(), and identify().

QgsPoint QgsMapToolIdentify::mLastPoint
private

Definition at line 169 of file qgsmaptoolidentify.h.

Referenced by formatChanged(), and identify().

QMap< QgsMapLayer*, QList<IdentifyResult> > QgsMapToolIdentify::mLayerIdResults
private

layer id map for layer select mode

Definition at line 164 of file qgsmaptoolidentify.h.

Referenced by handleMenuHover(), and identify().

QList<QgsHighlight*> QgsMapToolIdentify::mRubberBands
private

rubber bands for layer select mode

Definition at line 166 of file qgsmaptoolidentify.h.

Referenced by deleteRubberBands(), and handleMenuHover().


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