25QString QgsFilterVerticesAlgorithmBase::group()
const
27 return QObject::tr(
"Vector geometry" );
30QString QgsFilterVerticesAlgorithmBase::groupId()
const
32 return QStringLiteral(
"vectorgeometry" );
35QString QgsFilterVerticesAlgorithmBase::outputName()
const
37 return QObject::tr(
"Filtered" );
40QString QgsFilterVerticesAlgorithmBase::shortHelpString()
const
42 return QObject::tr(
"Filters away vertices based on their %1, returning geometries with only "
43 "vertex points that have a %1 ≥ the specified minimum value and ≤ "
44 "the maximum value.\n\n"
45 "If the minimum value is not specified then only the maximum value is tested, "
46 "and similarly if the maximum value is not specified then only the minimum value is tested.\n\n"
47 "Depending on the input geometry attributes and the filters used, "
48 "the resultant geometries created by this algorithm may no longer be valid." )
49 .arg( componentString() );
52QString QgsFilterVerticesAlgorithmBase::shortDescription()
const
54 return QObject::tr(
"Filters away vertices based on their %1 value." )
55 .arg( componentString() );
58void QgsFilterVerticesAlgorithmBase::initParameters(
const QVariantMap & )
61 min->setIsDynamic(
true );
63 min->setDynamicLayerParameterName( QStringLiteral(
"INPUT" ) );
64 addParameter( min.release() );
67 max->setIsDynamic(
true );
69 max->setDynamicLayerParameterName( QStringLiteral(
"INPUT" ) );
70 addParameter( max.release() );
75 if ( parameters.contains( QStringLiteral(
"MIN" ) ) && parameters.value( QStringLiteral(
"MIN" ) ).isValid() )
76 mMin = parameterAsDouble( parameters, QStringLiteral(
"MIN" ), context );
78 mMin = std::numeric_limits<double>::quiet_NaN();
82 mMinProperty = parameters.value( QStringLiteral(
"MIN" ) ).value<
QgsProperty>();
84 if ( parameters.contains( QStringLiteral(
"MAX" ) ) && parameters.value( QStringLiteral(
"MAX" ) ).isValid() )
85 mMax = parameterAsDouble( parameters, QStringLiteral(
"MAX" ), context );
87 mMax = std::numeric_limits<double>::quiet_NaN();
91 mMaxProperty = parameters.value( QStringLiteral(
"MAX" ) ).value<
QgsProperty>();
104 min = mMinProperty.valueAsDouble( context.
expressionContext(), std::numeric_limits<double>::quiet_NaN() );
108 max = mMaxProperty.valueAsDouble( context.
expressionContext(), std::numeric_limits<double>::quiet_NaN() );
110 filter( geometry, min, max );
120QString QgsFilterVerticesByM::name()
const
122 return QStringLiteral(
"filterverticesbym" );
125QString QgsFilterVerticesByM::displayName()
const
127 return QObject::tr(
"Filter vertices by M value" );
130QStringList QgsFilterVerticesByM::tags()
const
132 return QObject::tr(
"filter,points,vertex,m" ).split(
',' );
135QgsFilterVerticesByM *QgsFilterVerticesByM::createInstance()
const
137 return new QgsFilterVerticesByM();
140bool QgsFilterVerticesByM::supportInPlaceEdit(
const QgsMapLayer *l )
const
142 const QgsVectorLayer *layer = qobject_cast<const QgsVectorLayer *>( l );
146 if ( !QgsFilterVerticesAlgorithmBase::supportInPlaceEdit( layer ) )
151QString QgsFilterVerticesByM::componentString()
const
153 return QObject::tr(
"m-value" );
156void QgsFilterVerticesByM::filter(
QgsGeometry &geometry,
double min,
double max )
const
159 return ( std::isnan( min ) || point.
m() >= min )
160 && ( std::isnan( max ) || point.
m() <= max );
169QString QgsFilterVerticesByZ::name()
const
171 return QStringLiteral(
"filterverticesbyz" );
174QString QgsFilterVerticesByZ::displayName()
const
176 return QObject::tr(
"Filter vertices by Z value" );
179QStringList QgsFilterVerticesByZ::tags()
const
181 return QObject::tr(
"filter,points,vertex,z" ).split(
',' );
184QgsFilterVerticesByZ *QgsFilterVerticesByZ::createInstance()
const
186 return new QgsFilterVerticesByZ();
189bool QgsFilterVerticesByZ::supportInPlaceEdit(
const QgsMapLayer *l )
const
191 const QgsVectorLayer *layer = qobject_cast<const QgsVectorLayer *>( l );
195 if ( !QgsFilterVerticesAlgorithmBase::supportInPlaceEdit( layer ) )
200QString QgsFilterVerticesByZ::componentString()
const
202 return QObject::tr(
"z-value" );
205void QgsFilterVerticesByZ::filter(
QgsGeometry &geometry,
double min,
double max )
const
208 return ( std::isnan( min ) || point.
z() >= min )
209 && ( std::isnan( max ) || point.
z() <= max );
@ Double
Double/float values.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
bool hasGeometry() const
Returns true if the feature has an associated geometry.
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
A geometry is the spatial representation of a feature.
void filterVertices(const std::function< bool(const QgsPoint &) > &filter)
Filters the vertices from the geometry in place, removing any which do not return true for the filter...
Base class for all map layer types.
Point geometry type, with support for z-dimension and m-values.
Contains information about the context in which a processing algorithm is executed.
QgsExpressionContext & expressionContext()
Returns the expression context.
Base class for providing feedback from a processing algorithm.
static bool isDynamic(const QVariantMap ¶meters, const QString &name)
Returns true if the parameter with matching name is a dynamic parameter, and must be evaluated once f...
Definition for a property.
@ Double
Double value (including negative values).
A store for object properties.
Represents a vector layer which manages a vector based dataset.
Q_INVOKABLE Qgis::WkbType wkbType() const final
Returns the WKBType or WKBUnknown in case of error.
static Q_INVOKABLE bool hasZ(Qgis::WkbType type)
Tests whether a WKB type contains the z-dimension.
static Q_INVOKABLE bool hasM(Qgis::WkbType type)
Tests whether a WKB type contains m values.
QList< QgsFeature > QgsFeatureList