23 QString QgsOrientedMinimumBoundingBoxAlgorithm::name()
const 25 return QStringLiteral(
"orientedminimumboundingbox" );
28 QString QgsOrientedMinimumBoundingBoxAlgorithm::displayName()
const 30 return QObject::tr(
"Oriented minimum bounding box" );
33 QStringList QgsOrientedMinimumBoundingBoxAlgorithm::tags()
const 35 return QObject::tr(
"bounding,boxes,envelope,rectangle,extent,oriented,angle" ).split(
',' );
38 QString QgsOrientedMinimumBoundingBoxAlgorithm::group()
const 40 return QObject::tr(
"Vector geometry" );
43 QString QgsOrientedMinimumBoundingBoxAlgorithm::groupId()
const 45 return QStringLiteral(
"vectorgeometry" );
48 QString QgsOrientedMinimumBoundingBoxAlgorithm::outputName()
const 50 return QObject::tr(
"Bounding boxes" );
58 QString QgsOrientedMinimumBoundingBoxAlgorithm::shortHelpString()
const 60 return QObject::tr(
"This algorithm calculates the minimum area rotated rectangle which covers each feature in an input layer." ) +
61 QStringLiteral(
"\n\n" ) +
62 QObject::tr(
"See the 'Minimum bounding geometry' algorithm for a oriented bounding box calculation which covers the whole layer or grouped subsets of features." );
65 QgsOrientedMinimumBoundingBoxAlgorithm *QgsOrientedMinimumBoundingBoxAlgorithm::createInstance()
const 67 return new QgsOrientedMinimumBoundingBoxAlgorithm();
70 bool QgsOrientedMinimumBoundingBoxAlgorithm::supportInPlaceEdit(
const QgsMapLayer *l )
const 79 return layer->
wkbType() == QgsWkbTypes::Type::Polygon || layer->
wkbType() == QgsWkbTypes::Type::MultiPolygon;
82 QgsFields QgsOrientedMinimumBoundingBoxAlgorithm::outputFields(
const QgsFields &inputFields )
const 85 fields.
append(
QgsField( QStringLiteral(
"width" ), QVariant::Double, QString(), 20, 6 ) );
86 fields.
append(
QgsField( QStringLiteral(
"height" ), QVariant::Double, QString(), 20, 6 ) );
87 fields.
append(
QgsField( QStringLiteral(
"angle" ), QVariant::Double, QString(), 20, 6 ) );
88 fields.
append(
QgsField( QStringLiteral(
"area" ), QVariant::Double, QString(), 20, 6 ) );
89 fields.
append(
QgsField( QStringLiteral(
"perimeter" ), QVariant::Double, QString(), 20, 6 ) );
109 << 2 * width + 2 * height;
Base class for all map layer types.
Base class for providing feedback from a processing algorithm.
QgsWkbTypes::Type wkbType() const FINAL
Returns the WKBType or WKBUnknown in case of error.
QList< QgsFeature > QgsFeatureList
Container of fields for a vector layer.
A geometry is the spatial representation of a feature.
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...
bool hasGeometry() const
Returns true if the feature has an associated geometry.
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
Type
The WKB type describes the number of dimensions a geometry has.
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.
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
bool supportInPlaceEdit(const QgsMapLayer *layer) const override
Checks whether this algorithm supports in-place editing on the given layer Default implementation for...
QgsGeometry orientedMinimumBoundingBox(double &area, double &angle, double &width, double &height) const
Returns the oriented minimum bounding box for the geometry, which is the smallest (by area) rotated r...
Represents a vector layer which manages a vector based data sets.
Contains information about the context in which a processing algorithm is executed.