24 QString QgsExtentFromLayerAlgorithm::name()
const 26 return QStringLiteral(
"polygonfromlayerextent" );
29 QString QgsExtentFromLayerAlgorithm::displayName()
const 31 return QObject::tr(
"Extract layer extent" );
34 QStringList QgsExtentFromLayerAlgorithm::tags()
const 36 return QObject::tr(
"polygon,vector,raster,extent,envelope,bounds,bounding,boundary,layer,round,rounded" ).split(
',' );
39 QString QgsExtentFromLayerAlgorithm::group()
const 41 return QObject::tr(
"Layer tools" );
44 QString QgsExtentFromLayerAlgorithm::groupId()
const 46 return QStringLiteral(
"layertools" );
49 QString QgsExtentFromLayerAlgorithm::shortHelpString()
const 51 return QObject::tr(
"This algorithm takes a map layer and generates a new vector " 52 "layer with the minimum bounding box (rectangle polygon with " 53 "N-S orientation) that covers the input layer. Optionally, the " 54 "extent can be enlarged to a rounded value." );
57 QString QgsExtentFromLayerAlgorithm::svgIconPath()
const 62 QIcon QgsExtentFromLayerAlgorithm::icon()
const 67 QgsExtentFromLayerAlgorithm *QgsExtentFromLayerAlgorithm::createInstance()
const 69 return new QgsExtentFromLayerAlgorithm();
72 void QgsExtentFromLayerAlgorithm::initAlgorithm(
const QVariantMap & )
76 auto roundParam = qgis::make_unique < QgsProcessingParameterDistance >( QStringLiteral(
"ROUND_TO" ), QObject::tr(
"Round values to" ), 0, QStringLiteral(
"INPUT" ), 0 );
78 addParameter( roundParam.release() );
85 QgsMapLayer *layer = parameterAsLayer( parameters, QStringLiteral(
"INPUT" ), context );
90 double roundTo = parameterAsDouble( parameters, QStringLiteral(
"ROUND_TO" ), context );
93 fields.
append(
QgsField( QStringLiteral(
"MINX" ), QVariant::Double ) );
94 fields.
append(
QgsField( QStringLiteral(
"MINY" ), QVariant::Double ) );
95 fields.
append(
QgsField( QStringLiteral(
"MAXX" ), QVariant::Double ) );
96 fields.
append(
QgsField( QStringLiteral(
"MAXY" ), QVariant::Double ) );
97 fields.
append(
QgsField( QStringLiteral(
"CNTX" ), QVariant::Double ) );
98 fields.
append(
QgsField( QStringLiteral(
"CNTY" ), QVariant::Double ) );
99 fields.
append(
QgsField( QStringLiteral(
"AREA" ), QVariant::Double ) );
100 fields.
append(
QgsField( QStringLiteral(
"PERIM" ), QVariant::Double ) );
101 fields.
append(
QgsField( QStringLiteral(
"HEIGHT" ), QVariant::Double ) );
102 fields.
append(
QgsField( QStringLiteral(
"WIDTH" ), QVariant::Double ) );
105 std::unique_ptr< QgsFeatureSink > sink( parameterAsSink( parameters, QStringLiteral(
"OUTPUT" ), context, dest, fields,
QgsWkbTypes::Polygon, layer->
crs() ) );
109 if (
QgsVectorLayer *vl = qobject_cast< QgsVectorLayer * >( layer ) )
130 double height = rect.
height();
131 double width = rect.
width();
132 double cntX = minX + width / 2.0;
133 double cntY = minY + height / 2.0;
134 double area = width * height;
135 double perim = 2 * width + 2 * height;
143 outputs.insert( QStringLiteral(
"OUTPUT" ), dest );
Use faster inserts, at the cost of updating the passed features to reflect changes made at the provid...
A rectangle specified with double values.
Base class for all map layer types.
Base class for providing feedback from a processing algorithm.
Parameter is an advanced parameter which should be hidden from users by default.
void setXMaximum(double x)
Set the maximum x value.
A map layer parameter for processing algorithms.
static QString iconPath(const QString &iconFile)
Returns path to the desired icon file.
Container of fields for a vector layer.
A geometry is the spatial representation of a feature.
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon.
void setAttributes(const QgsAttributes &attrs)
Sets the feature's attributes.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
A feature sink output for processing algorithms.
virtual QgsRectangle extent() const
Returns the extent of the layer.
static QgsGeometry fromRect(const QgsRectangle &rect)
Creates a new geometry from a QgsRectangle.
double width() const
Returns the width of the rectangle.
void setYMinimum(double y)
Set the minimum y value.
Custom exception class for processing related exceptions.
bool append(const QgsField &field, FieldOrigin origin=OriginProvider, int originIndex=-1)
Appends a field. The field must have unique name, otherwise it is rejected (returns false) ...
Encapsulate a field in an attribute table or data source.
double yMinimum() const
Returns the y minimum value (bottom side of rectangle).
double xMaximum() const
Returns the x maximum value (right side of rectangle).
void setYMaximum(double y)
Set the maximum y value.
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
double xMinimum() const
Returns the x minimum value (left side of rectangle).
double yMaximum() const
Returns the y maximum value (top side of rectangle).
Represents a vector layer which manages a vector based data sets.
Contains information about the context in which a processing algorithm is executed.
void setXMinimum(double x)
Set the minimum x value.
QgsCoordinateReferenceSystem crs
double height() const
Returns the height of the rectangle.