24 QString QgsFilterVerticesAlgorithmBase::group()
const 26 return QObject::tr(
"Vector geometry" );
29 QString QgsFilterVerticesAlgorithmBase::groupId()
const 31 return QStringLiteral(
"vectorgeometry" );
34 QString QgsFilterVerticesAlgorithmBase::outputName()
const 36 return QObject::tr(
"Filtered" );
39 QString QgsFilterVerticesAlgorithmBase::shortHelpString()
const 41 return QObject::tr(
"Filters away vertices based on their %1, returning geometries with only " 42 "vertex points that have a %1 ≥ the specified minimum value and ≤ " 43 "the maximum value.\n\n" 44 "If the minimum value is not specified than only the maximum value is tested, " 45 "and similarly if the maximum value is not specified than only the minimum value is tested.\n\n" 46 "Depending on the input geometry attributes and the filters used, " 47 "the resultant geometries created by this algorithm may no longer be valid." ).arg( componentString() );
50 QList<int> QgsFilterVerticesAlgorithmBase::inputLayerTypes()
const 55 void QgsFilterVerticesAlgorithmBase::initParameters(
const QVariantMap & )
57 auto min = qgis::make_unique< QgsProcessingParameterNumber >( QStringLiteral(
"MIN" ),
59 min->setIsDynamic(
true );
61 min->setDynamicLayerParameterName( QStringLiteral(
"INPUT" ) );
62 addParameter( min.release() );
64 auto max = qgis::make_unique< QgsProcessingParameterNumber >( QStringLiteral(
"MAX" ),
66 max->setIsDynamic(
true );
68 max->setDynamicLayerParameterName( QStringLiteral(
"INPUT" ) );
69 addParameter( max.release() );
74 if ( parameters.contains( QStringLiteral(
"MIN" ) ) && parameters.value( QStringLiteral(
"MIN" ) ).isValid() )
75 mMin = parameterAsDouble( parameters, QStringLiteral(
"MIN" ), context );
77 mMin = std::numeric_limits<double>::quiet_NaN();
81 mMinProperty = parameters.value( QStringLiteral(
"MIN" ) ).value<
QgsProperty >();
83 if ( parameters.contains( QStringLiteral(
"MAX" ) ) && parameters.value( QStringLiteral(
"MAX" ) ).isValid() )
84 mMax = parameterAsDouble( parameters, QStringLiteral(
"MAX" ), context );
86 mMax = std::numeric_limits<double>::quiet_NaN();
90 mMaxProperty = parameters.value( QStringLiteral(
"MAX" ) ).value<
QgsProperty >();
103 min = mMinProperty.valueAsDouble( context.
expressionContext(), std::numeric_limits<double>::quiet_NaN() );
107 max = mMaxProperty.valueAsDouble( context.
expressionContext(), std::numeric_limits<double>::quiet_NaN() );
109 filter( geometry, min, max );
119 QString QgsFilterVerticesByM::name()
const 121 return QStringLiteral(
"filterverticesbym" );
124 QString QgsFilterVerticesByM::displayName()
const 126 return QObject::tr(
"Filter vertices by M value" );
129 QStringList QgsFilterVerticesByM::tags()
const 131 return QObject::tr(
"filter,points,vertex,m" ).split(
',' );
134 QgsFilterVerticesByM *QgsFilterVerticesByM::createInstance()
const 136 return new QgsFilterVerticesByM();
139 bool QgsFilterVerticesByM::supportInPlaceEdit(
const QgsMapLayer *l )
const 145 if ( ! QgsFilterVerticesAlgorithmBase::supportInPlaceEdit( layer ) )
150 QString QgsFilterVerticesByM::componentString()
const 152 return QObject::tr(
"m-value" );
155 void QgsFilterVerticesByM::filter(
QgsGeometry &geometry,
double min,
double max )
const 159 return ( std::isnan( min ) || point.
m() >= min )
160 && ( std::isnan( max ) || point.
m() <= max );
169 QString QgsFilterVerticesByZ::name()
const 171 return QStringLiteral(
"filterverticesbyz" );
174 QString QgsFilterVerticesByZ::displayName()
const 176 return QObject::tr(
"Filter vertices by Z value" );
179 QStringList QgsFilterVerticesByZ::tags()
const 181 return QObject::tr(
"filter,points,vertex,z" ).split(
',' );
184 QgsFilterVerticesByZ *QgsFilterVerticesByZ::createInstance()
const 186 return new QgsFilterVerticesByZ();
189 bool QgsFilterVerticesByZ::supportInPlaceEdit(
const QgsMapLayer *l )
const 195 if ( ! QgsFilterVerticesAlgorithmBase::supportInPlaceEdit( layer ) )
200 QString QgsFilterVerticesByZ::componentString()
const 202 return QObject::tr(
"z-value" );
205 void QgsFilterVerticesByZ::filter(
QgsGeometry &geometry,
double min,
double max )
const 209 return ( std::isnan( min ) || point.
z() >= min )
210 && ( std::isnan( max ) || point.
z() <= max );
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.
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...
QList< QgsFeature > QgsFeatureList
A geometry is the spatial representation of a feature.
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.
static bool hasZ(Type type)
Tests whether a WKB type contains the z-dimension.
A store for object properties.
Point geometry type, with support for z-dimension and m-values.
Double value (including negative values)
QgsExpressionContext & expressionContext()
Returns the expression context.
Definition for a property.
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
static bool hasM(Type type)
Tests whether a WKB type contains m values.
Represents a vector layer which manages a vector based data sets.
Contains information about the context in which a processing algorithm is executed.
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...