48 #include <QMouseEvent> 58 , mLastMapUnitsPerPixel( -1.0 )
59 , mCoordinatePrecision( 6 )
91 return identify( x, y, mode, QList<QgsMapLayer *>(), layerType );
101 return identify( geometry, mode, QList<QgsMapLayer *>(), layerType );
106 QList<IdentifyResult> results;
108 mLastGeometry = geometry;
123 int x = canvasPt.x(), y = canvasPt.y();
125 QPoint globalPos =
mCanvas->mapToGlobal( QPoint( x + 5, y + 5 ) );
128 else if ( mode ==
ActiveLayer && layerList.isEmpty() )
134 emit
identifyMessage( tr(
"No active layer. To identify features, you must choose an active layer." ) );
138 QApplication::setOverrideCursor( Qt::WaitCursor );
140 identifyLayer( &results, layer, mLastGeometry, mLastExtent, mLastMapUnitsPerPixel, layerType );
144 QApplication::setOverrideCursor( Qt::WaitCursor );
147 if ( layerList.isEmpty() )
150 layerCount = layerList.count();
153 for (
int i = 0; i < layerCount; i++ )
157 if ( layerList.isEmpty() )
160 layer = layerList.value( i );
168 if (
identifyLayer( &results, layer, mLastGeometry, mLastExtent, mLastMapUnitsPerPixel, layerType ) )
179 QApplication::restoreOverrideCursor();
186 mOverrideCanvasSearchRadius = searchRadiusMapUnits;
191 mOverrideCanvasSearchRadius = -1;
213 return identifyRasterLayer( results, qobject_cast<QgsRasterLayer *>( layer ), geometry, viewExtent, mapUnitsPerPixel );
221 return identifyMeshLayer( results, qobject_cast<QgsMeshLayer *>( layer ), geometry );
249 if ( ! scalarDatasetIndex.
isValid() && ! vectorDatasetIndex.
isValid() )
252 QMap< QString, QString > scalarAttributes, vectorAttributes;
255 if ( scalarDatasetIndex.
isValid() )
260 const double scalar = scalarValue.
scalar();
261 if ( std::isnan( scalar ) )
262 scalarAttributes.insert( tr(
"Scalar Value" ), tr(
"no data" ) );
264 scalarAttributes.insert( tr(
"Scalar Value" ), QString::number( scalar ) );
268 if ( vectorDatasetIndex.
isValid() )
273 const double vectorX = vectorValue.
x();
274 const double vectorY = vectorValue.
y();
276 if ( std::isnan( vectorX ) || std::isnan( vectorY ) )
277 vectorAttributes.insert( tr(
"Vector Value" ), tr(
"no data" ) );
280 vectorAttributes.insert( tr(
"Vector Magnitude" ), QString::number( vectorValue.
scalar() ) );
281 vectorAttributes.insert( tr(
"Vector x-component" ), QString::number( vectorY ) );
282 vectorAttributes.insert( tr(
"Vector y-component" ), QString::number( vectorX ) );
287 if ( scalarGroup == vectorGroup )
289 const IdentifyResult result( qobject_cast<QgsMapLayer *>( layer ),
293 results->append( result );
297 if ( !scalarGroup.isEmpty() )
299 const IdentifyResult result( qobject_cast<QgsMapLayer *>( layer ),
303 results->append( result );
305 if ( !vectorGroup.isEmpty() )
307 const IdentifyResult result( qobject_cast<QgsMapLayer *>( layer ),
311 results->append( result );
319 QMap< QString, QString > derivedAttributes;
320 derivedAttributes.insert( tr(
"(clicked coordinate X)" ), formatXCoordinate( point ) );
321 derivedAttributes.insert( tr(
"(clicked coordinate Y)" ), formatYCoordinate( point ) );
323 derivedAttributes.insert( tr(
"(clicked coordinate Z)" ), QString::number( point.
z(),
'f' ) );
324 return derivedAttributes;
334 QgsDebugMsg( QStringLiteral(
"Out of scale limits" ) );
338 QApplication::setOverrideCursor( Qt::WaitCursor );
340 QMap< QString, QString > commonDerivedAttributes;
343 bool isPointOrRectangle;
348 isPointOrRectangle =
true;
349 point = selectionGeom.
asPoint();
359 int featureCount = 0;
362 std::unique_ptr<QgsGeometryEngine> selectionGeomPrepared;
372 double sr = mOverrideCanvasSearchRadius < 0 ?
searchRadiusMU(
mCanvas ) : mOverrideCanvasSearchRadius;
379 if ( !isPointOrRectangle )
394 if ( !selectionGeomPrepared || selectionGeomPrepared->intersects( f.
geometry().
constGet() ) )
402 QgsDebugMsg( QStringLiteral(
"Caught CRS exception %1" ).arg( cse.
what() ) );
409 std::unique_ptr< QgsFeatureRenderer > renderer( layer->
renderer() ? layer->
renderer()->
clone() : nullptr );
413 renderer->startRender( context, layer->
fields() );
417 for (
const QgsFeature &feature : qgis::as_const( featureList ) )
419 QMap< QString, QString > derivedAttributes = commonDerivedAttributes;
424 if ( filter && !renderer->willRenderFeature( feature, context ) )
430 derivedAttributes.unite( featureDerivedAttributes( feature, layer,
toLayerCoordinates( layer, point ) ) );
432 derivedAttributes.insert( tr(
"Feature ID" ), fid < 0 ? tr(
"new feature" ) :
FID_TO_STRING( fid ) );
434 results->append(
IdentifyResult( qobject_cast<QgsMapLayer *>( layer ), feature, derivedAttributes ) );
439 renderer->stopRender( context );
442 QgsDebugMsg(
"Feature count on identify: " + QString::number( featureCount ) );
444 QApplication::restoreOverrideCursor();
445 return featureCount > 0;
450 QString str = QLocale().toString( vId.
vertex + 1 );
451 derivedAttributes.insert( tr(
"Closest vertex number" ), str );
456 derivedAttributes.insert( tr(
"Closest vertex X" ), formatXCoordinate( closestPointMapCoords ) );
457 derivedAttributes.insert( tr(
"Closest vertex Y" ), formatYCoordinate( closestPointMapCoords ) );
459 if ( closestPoint.
is3D() )
461 str = QLocale().
toString( closestPoint.
z(),
'g', 10 );
462 derivedAttributes.insert( tr(
"Closest vertex Z" ), str );
466 str = QLocale().toString( closestPoint.
m(),
'g', 10 );
467 derivedAttributes.insert( tr(
"Closest vertex M" ), str );
472 double radius, centerX, centerY;
478 geometry.
vertexAt( vIdAfter ), radius, centerX, centerY );
479 derivedAttributes.insert( QStringLiteral(
"Closest vertex radius" ), QLocale().toString( radius ) );
483 void QgsMapToolIdentify::closestPointAttributes(
const QgsAbstractGeometry &geometry,
const QgsPointXY &layerPoint, QMap<QString, QString> &derivedAttributes )
487 derivedAttributes.insert( tr(
"Closest X" ), formatXCoordinate( closestPoint ) );
488 derivedAttributes.insert( tr(
"Closest Y" ), formatYCoordinate( closestPoint ) );
490 if ( closestPoint.
is3D() )
492 const QString str = QLocale().toString( closestPoint.
z(),
'g', 10 );
493 derivedAttributes.insert( tr(
"Interpolated Z" ), str );
497 const QString str = QLocale().toString( closestPoint.
m(),
'g', 10 );
498 derivedAttributes.insert( tr(
"Interpolated M" ), str );
502 QString QgsMapToolIdentify::formatCoordinate(
const QgsPointXY &canvasPoint )
const 505 mCoordinatePrecision );
508 QString QgsMapToolIdentify::formatXCoordinate(
const QgsPointXY &canvasPoint )
const 510 QString coordinate = formatCoordinate( canvasPoint );
511 return coordinate.split(
',' ).at( 0 );
514 QString QgsMapToolIdentify::formatYCoordinate(
const QgsPointXY &canvasPoint )
const 516 QString coordinate = formatCoordinate( canvasPoint );
517 return coordinate.split(
',' ).at( 1 );
524 QMap< QString, QString > derivedAttributes;
547 QString str = QLocale().toString( static_cast<const QgsGeometryCollection *>( feature.
geometry().
constGet() )->numGeometries() );
548 derivedAttributes.insert( tr(
"Parts" ), str );
549 str = QLocale().toString( vId.
part + 1 );
550 derivedAttributes.insert( tr(
"Part number" ), str );
554 ? displayDistanceUnits() : layer->
crs().
mapUnits();
565 str = formatDistance( dist );
566 derivedAttributes.insert( tr(
"Length (Ellipsoidal, %1)" ).arg( ellipsoid ), str );
570 derivedAttributes.insert( tr(
"Length (Cartesian)" ), str );
576 derivedAttributes.insert( tr(
"Vertices" ), str );
578 closestVertexAttributes( *geom, vId, layer, derivedAttributes );
579 closestPointAttributes( *geom, layerPoint, derivedAttributes );
581 if (
const QgsCurve *curve = qgsgeometry_cast< const QgsCurve * >( geom ) )
585 str = formatXCoordinate( pnt );
586 derivedAttributes.insert( tr(
"firstX",
"attributes get sorted; translation for lastX should be lexically larger than this one" ), str );
587 str = formatYCoordinate( pnt );
588 derivedAttributes.insert( tr(
"firstY" ), str );
590 str = formatXCoordinate( pnt );
591 derivedAttributes.insert( tr(
"lastX",
"attributes get sorted; translation for firstX should be lexically smaller than this one" ), str );
592 str = formatYCoordinate( pnt );
593 derivedAttributes.insert( tr(
"lastY" ), str );
604 str = formatArea( area );
605 derivedAttributes.insert( tr(
"Area (Ellipsoidal, %1)" ).arg( ellipsoid ), str );
609 derivedAttributes.insert( tr(
"Area (Cartesian)" ), str );
615 str = formatDistance( perimeter );
616 derivedAttributes.insert( tr(
"Perimeter (Ellipsoidal, %1)" ).arg( ellipsoid ), str );
620 derivedAttributes.insert( tr(
"Perimeter (Cartesian)" ), str );
623 derivedAttributes.insert( tr(
"Vertices" ), str );
626 closestVertexAttributes( *feature.
geometry().
constGet(), vId, layer, derivedAttributes );
627 closestPointAttributes( *feature.
geometry().
constGet(), layerPoint, derivedAttributes );
635 QString str = formatXCoordinate( pnt );
636 derivedAttributes.insert( tr(
"X" ), str );
637 str = formatYCoordinate( pnt );
638 derivedAttributes.insert( tr(
"Y" ), str );
642 str = QLocale().toString( static_cast<const QgsPoint *>( feature.
geometry().
constGet() )->z(),
'g', 10 );
643 derivedAttributes.insert( tr(
"Z" ), str );
647 str = QLocale().toString( static_cast<const QgsPoint *>( feature.
geometry().
constGet() )->m(),
'g', 10 );
648 derivedAttributes.insert( tr(
"M" ), str );
658 closestVertexAttributes( *geom, vId, layer, derivedAttributes );
663 return derivedAttributes;
694 QgsDebugMsg( QStringLiteral(
"coordinate not reprojectable: %1" ).arg( cse.
what() ) );
697 QgsDebugMsg( QStringLiteral(
"point = %1 %2" ).arg( point.
x() ).arg( point.
y() ) );
702 QMap< QString, QString > attributes, derivedAttributes;
727 r.
setXMinimum( pointInCanvasCrs.
x() - mapUnitsPerPixel / 2. );
728 r.
setXMaximum( pointInCanvasCrs.
x() + mapUnitsPerPixel / 2. );
729 r.
setYMinimum( pointInCanvasCrs.
y() - mapUnitsPerPixel / 2. );
730 r.
setYMaximum( pointInCanvasCrs.
y() + mapUnitsPerPixel / 2. );
734 identifyResult = dprovider->
identify( point, format, r, 1, 1 );
750 int width =
static_cast< int >( std::round( viewExtent.
width() / mapUnitsPerPixel ) );
751 int height =
static_cast< int >( std::round( viewExtent.
height() / mapUnitsPerPixel ) );
753 QgsDebugMsg( QStringLiteral(
"viewExtent.width = %1 viewExtent.height = %2" ).arg( viewExtent.
width() ).arg( viewExtent.
height() ) );
754 QgsDebugMsg( QStringLiteral(
"width = %1 height = %2" ).arg( width ).arg( height ) );
755 QgsDebugMsg( QStringLiteral(
"xRes = %1 yRes = %2 mapUnitsPerPixel = %3" ).arg( viewExtent.
width() / width ).arg( viewExtent.
height() / height ).arg( mapUnitsPerPixel ) );
757 identifyResult = dprovider->
identify( point, format, viewExtent, width, height );
762 if ( identifyResult.
isValid() )
764 QMap<int, QVariant> values = identifyResult.
results();
768 for (
auto it = values.constBegin(); it != values.constEnd(); ++it )
771 if ( it.value().isNull() )
773 valueString = tr(
"no data" );
777 QVariant value( it.value() );
781 if ( static_cast<QMetaType::Type>( value.type() ) == QMetaType::Float )
792 QString label = layer->
name();
793 results->append(
IdentifyResult( qobject_cast<QgsMapLayer *>( layer ), label, attributes, derivedAttributes ) );
797 for (
auto it = values.constBegin(); it != values.constEnd(); ++it )
799 QVariant value = it.value();
800 if ( value.type() == QVariant::Bool && !value.toBool() )
806 if ( value.type() == QVariant::String )
810 QString label = layer->
subLayers().value( it.key() );
812 attributes.insert( tr(
"Error" ), value.toString() );
814 results->append(
IdentifyResult( qobject_cast<QgsMapLayer *>( layer ), label, attributes, derivedAttributes ) );
824 for (
const QgsFeature &feature : storeFeatures )
830 QString sublayer = featureStore.params().value( QStringLiteral(
"sublayer" ) ).toString();
831 QString featureType = featureStore.params().value( QStringLiteral(
"featureType" ) ).toString();
833 featureType.remove( QStringLiteral(
"_feature" ) );
835 if ( sublayer.compare( layer->
name(), Qt::CaseInsensitive ) != 0 )
839 if ( featureType.compare( sublayer, Qt::CaseInsensitive ) != 0 || labels.isEmpty() )
841 labels << featureType;
844 QMap< QString, QString > derAttributes = derivedAttributes;
845 derAttributes.unite( featureDerivedAttributes( feature, layer ) );
847 IdentifyResult identifyResult( qobject_cast<QgsMapLayer *>( layer ), labels.join( QStringLiteral(
" / " ) ), featureStore.fields(), feature, derAttributes );
849 identifyResult.mParams.insert( QStringLiteral(
"getFeatureInfoUrl" ), featureStore.params().value( QStringLiteral(
"getFeatureInfoUrl" ) ) );
850 results->append( identifyResult );
857 QgsDebugMsg( QStringLiteral(
"%1 HTML or text values" ).arg( values.size() ) );
858 for (
auto it = values.constBegin(); it != values.constEnd(); ++it )
860 QString value = it.value().toString();
862 attributes.insert( QString(), value );
864 QString label = layer->
subLayers().value( it.key() );
865 results->append(
IdentifyResult( qobject_cast<QgsMapLayer *>( layer ), label, attributes, derivedAttributes ) );
873 attributes.insert( tr(
"Error" ), value );
874 QString label = tr(
"Identify error" );
875 results->append(
IdentifyResult( qobject_cast<QgsMapLayer *>( layer ), label, attributes, derivedAttributes ) );
891 QString QgsMapToolIdentify::formatDistance(
double distance )
const 893 return formatDistance( distance, displayDistanceUnits() );
896 QString QgsMapToolIdentify::formatArea(
double area )
const 898 return formatArea( area, displayAreaUnits() );
904 bool baseUnit = settings.
value( QStringLiteral(
"qgis/measure/keepbaseunit" ),
true ).toBool();
912 bool baseUnit = settings.
value( QStringLiteral(
"qgis/measure/keepbaseunit" ),
true ).toBool();
919 QList<IdentifyResult> results;
920 if (
identifyRasterLayer( &results, layer, mLastGeometry, mLastExtent, mLastMapUnitsPerPixel ) )
bool isMeasure() const
Returns true if the geometry contains m values.
Wrapper for iterator of features from vector data provider or vector layer.
A container for features with the same fields and crs.
bool contains(const QgsRectangle &rect) const
Returns true when rectangle contains other rectangle.
A rectangle specified with double values.
Base class for all map layer types.
QStringList subLayers() const override
Returns the sublayers of this layer.
static QString printValue(double value)
Print double value with all necessary significant digits.
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context, which stores various information regarding which datum tran...
OperationResult transform(const QgsCoordinateTransform &ct, QgsCoordinateTransform::TransformDirection direction=QgsCoordinateTransform::ForwardTransform, bool transformZ=false) SIP_THROW(QgsCsException)
Transforms this geometry as described by the coordinate transform ct.
void setXMaximum(double x)
Set the maximum x value.
Use exact geometry intersection (slower) instead of bounding boxes.
This class is a composition of two QSettings instances:
static bool isMultiType(Type type)
Returns true if the WKB type is a multi type.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.
This class provides qgis with the ability to render raster datasets onto the mapcanvas.
Features may be filtered, i.e. some features may not be rendered (categorized, rule based ...
QList< QgsFeatureStore > QgsFeatureStoreList
QList< QgsFeature > QgsFeatureList
QgsWkbTypes::Type wkbType() const
Returns type of the geometry as a WKB type (point / linestring / polygon etc.)
A class to represent a 2D point.
int layerCount() const
Returns number of layers on the map.
A QgsMapMouseEvent is the result of a user interaction with the mouse on a QgsMapCanvas.
static Capability identifyFormatToCapability(QgsRaster::IdentifyFormat format)
bool isInScaleRange(double scale) const
Tests whether the layer should be visible at the specified scale.
QgsMapLayer::LayerFlags flags() const
Returns the flags for this layer.
A geometry is the spatial representation of a feature.
QString toString(int precision=-1) const
Returns a string representation of the point (x, y) with a preset precision.
double convertLengthMeasurement(double length, QgsUnitTypes::DistanceUnit toUnits) const
Takes a length measurement calculated by this QgsDistanceArea object and converts it to a different d...
QgsUnitTypes::DistanceUnit mapUnits
bool setEllipsoid(const QString &ellipsoid)
Sets the ellipsoid by its acronym.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
static QgsPoint closestVertex(const QgsAbstractGeometry &geom, const QgsPoint &pt, QgsVertexId &id)
Returns the closest vertex to a geometry for a specified point.
double convertAreaMeasurement(double area, QgsUnitTypes::AreaUnit toUnits) const
Takes an area measurement calculated by this QgsDistanceArea object and converts it to a different ar...
bool hasGeometry() const
Returns true if the feature has an associated geometry.
int group() const
Returns a group index.
QgsMapLayer::LayerType type() const
Returns the type of the layer.
bool isSpatial() const FINAL
Returns true if this is a geometry layer and false in case of NoGeometry (table only) or UnknownGeome...
static bool hasZ(Type type)
Tests whether a WKB type contains the z-dimension.
Map canvas is a class for displaying all GIS data types on a canvas.
const QString GEO_NONE
Constant that holds the string representation for "No ellips/No CRS".
QgsCoordinateReferenceSystem destinationCrs() const
returns CRS of destination coordinate reference system
virtual QgsRectangle extent() const
Returns the extent of the layer.
double y() const
Returns y value.
Raster identify results container.
static QgsGeometry fromRect(const QgsRectangle &rect)
Creates a new geometry from a QgsRectangle.
QgsRasterDataProvider * dataProvider() override
Returns the layer's data provider, it may be null.
virtual double length() const
Returns the length of the geometry.
QgsMeshDatasetIndex activeVectorDataset() const
Returns active vector dataset.
bool isValid() const
Returns true if valid.
Type
The WKB type describes the number of dimensions a geometry has.
Represents all mesh renderer settings.
double mapUnitsPerPixel() const
Returns the mapUnitsPerPixel (map units per pixel) for the canvas.
QgsFields fields() const FINAL
Returns the list of fields of this layer.
Utility class for identifying a unique vertex within a geometry.
#define QgsDebugMsgLevel(str, level)
static QgsRaster::IdentifyFormat identifyFormatFromName(const QString &formatName)
virtual int capabilities() const
Returns a bitmask containing the supported capabilities.
virtual QgsCoordinateReferenceSystem crs() const =0
Returns the coordinate system for the data source.
double scale() const
Returns the calculated map scale.
QgsMeshRendererSettings rendererSettings() const
Returns renderer settings.
double width() const
Returns the width of the rectangle.
void setYMinimum(double y)
Set the minimum y value.
QgsRectangle extent() const
Returns the current zoom extent of the map canvas.
This class wraps a request for features to a vector layer (or directly its vector data provider)...
QgsFeatureRenderer * renderer()
Returns renderer.
Abstract base class for curved geometry type.
QgsMeshDataProvider * dataProvider() override
Returns the layer's data provider, it may be null.
double measureLength(const QgsGeometry &geometry) const
Measures the length of a geometry.
Abstract base class for all geometries.
double scalar() const
Returns magnitude of vector for vector data or scalar value for scalar data.
Point geometry type, with support for z-dimension and m-values.
QgsMeshDatasetValue datasetValue(const QgsMeshDatasetIndex &index, const QgsPointXY &point) const
Interpolates the value on the given point from given dataset.
double measurePerimeter(const QgsGeometry &geometry) const
Measures the perimeter of a polygon geometry.
QMap< int, QVariant > results() const
Returns the identify results.
static QgsGeometryEngine * createGeometryEngine(const QgsAbstractGeometry *geometry)
Creates and returns a new geometry engine.
const QgsAbstractGeometry * constGet() const
Returns a non-modifiable (const) reference to the underlying abstract geometry primitive.
QgsMapLayer * currentLayer()
returns current layer (set by legend widget)
QgsExpressionContext & expressionContext()
Gets the expression context.
DistanceUnit
Units of distance.
static Q_INVOKABLE DistanceUnitType unitType(QgsUnitTypes::DistanceUnit unit)
Returns the type for a distance unit.
QgsCoordinateTransformContext transformContext
const QgsMapSettings & mapSettings() const
Gets access to properties used for map rendering.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
A general purpose distance and area calculator, capable of performing ellipsoid based calculations...
QgsUnitTypes::DistanceUnit mapUnits() const
Convenience function for returning the current canvas map units.
Contains information about the context of a rendering operation.
QString message(QgsErrorMessage::Format format=QgsErrorMessage::Html) const
Full error messages description.
QgsPointXY asPoint() const
Returns the contents of the geometry as a 2-dimensional point.
#define FID_TO_STRING(fid)
QgsError error() const
Returns the last error.
void setYMaximum(double y)
Set the maximum y value.
QgsPointXY layerToMapCoordinates(const QgsMapLayer *layer, QgsPointXY point) const
transform point coordinates from layer's CRS to output CRS
static QgsRenderContext fromMapSettings(const QgsMapSettings &mapSettings)
create initialized QgsRenderContext instance from given QgsMapSettings
static QgsProject * instance()
Returns the QgsProject singleton instance.
virtual double perimeter() const
Returns the perimeter of the geometry.
QgsRectangle boundingBox() const
Returns the bounding box of the geometry.
QgsMeshDatasetIndex is index that identifies the dataset group (e.g.
virtual QgsRasterIdentifyResult identify(const QgsPointXY &point, QgsRaster::IdentifyFormat format, const QgsRectangle &boundingBox=QgsRectangle(), int width=0, int height=0, int dpi=96)
Identify raster value(s) found on the point position.
static void circleCenterRadius(const QgsPoint &pt1, const QgsPoint &pt2, const QgsPoint &pt3, double &radius, double ¢erX, double ¢erY)
Returns radius and center of the circle through pt1, pt2, pt3.
static QString formatArea(double area, int decimals, QgsUnitTypes::AreaUnit unit, bool keepBaseUnit=false)
Returns an area formatted as a friendly string.
bool isValid() const
Returns whether index is valid, ie at least groups is set.
T enumValue(const QString &key, const T &defaultValue, const Section section=NoSection)
Returns the setting value for a setting based on an enum.
Represents a mesh layer supporting display of data on structured or unstructured meshes.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const FINAL
Query the layer for features specified in request.
static bool hasM(Type type)
Tests whether a WKB type contains m values.
static QCursor getThemeCursor(Cursor cursor)
Helper to get a theme cursor.
void setSourceCrs(const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context)
Sets source spatial reference system crs.
QgsWkbTypes::GeometryType type
QgsMeshDatasetValue represents single dataset value.
Custom exception class for Coordinate Reference System related exceptions.
QVariant customProperty(const QString &value, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer.
static QgsPoint closestPoint(const QgsAbstractGeometry &geometry, const QgsPoint &point)
Returns the nearest point on a segment of a geometry for the specified point.
double area() const
Returns the area of the geometry using GEOS.
static QgsExpressionContextScope * layerScope(const QgsMapLayer *layer)
Creates a new scope which contains variables and functions relating to a QgsMapLayer.
bool nextFeature(QgsFeature &f)
virtual QString generateBandName(int bandNumber) const
helper function to create zero padded band names
static Q_INVOKABLE double fromUnitToUnitFactor(QgsUnitTypes::DistanceUnit fromUnit, QgsUnitTypes::DistanceUnit toUnit)
Returns the conversion factor between the specified distance units.
virtual QgsPoint vertexAt(QgsVertexId id) const =0
Returns the point corresponding to a specified vertex id.
virtual int nCoordinates() const
Returns the number of nodes contained in the geometry.
Represents a vector layer which manages a vector based data sets.
static Type flatType(Type type)
Returns the flat type for a WKB type.
static Q_INVOKABLE QgsUnitTypes::AreaUnit distanceToAreaUnit(QgsUnitTypes::DistanceUnit distanceUnit)
Converts a distance unit to its corresponding area unit, e.g., meters to square meters.
If the layer is identifiable using the identify map tool and as a WMS layer.
bool is3D() const
Returns true if the geometry is 3D and contains a z-value.
double x() const
Returns x value.
QgsMapLayer * layer(int index)
Returns the map layer at position index in the layer stack.
virtual QgsFeatureRenderer * clone() const =0
Create a deep copy of this renderer.
double measureArea(const QgsGeometry &geometry) const
Measures the area of a geometry.
static QgsGeometry fromPointXY(const QgsPointXY &point)
Creates a new geometry from a QgsPointXY object.
void setXMinimum(double x)
Set the minimum x value.
QgsCoordinateReferenceSystem crs
double height() const
Returns the height of the rectangle.
Base class for raster data providers.
virtual QgsMeshDatasetGroupMetadata datasetGroupMetadata(int groupIndex) const =0
Returns dataset group metadata.
static QString formatDistance(double distance, int decimals, QgsUnitTypes::DistanceUnit unit, bool keepBaseUnit=false)
Returns an distance formatted as a friendly string.
QgsMeshDatasetIndex activeScalarDataset() const
Returns active scalar dataset.