22QString QgsSegmentizeByMaximumDistanceAlgorithm::name()
const
24 return QStringLiteral(
"segmentizebymaxdistance" );
27QString QgsSegmentizeByMaximumDistanceAlgorithm::displayName()
const
29 return QObject::tr(
"Segmentize by maximum distance" );
32QStringList QgsSegmentizeByMaximumDistanceAlgorithm::tags()
const
34 return QObject::tr(
"straighten,linearize,densify,curves,curved,circular" ).split(
',' );
37QString QgsSegmentizeByMaximumDistanceAlgorithm::group()
const
39 return QObject::tr(
"Vector geometry" );
42QString QgsSegmentizeByMaximumDistanceAlgorithm::groupId()
const
44 return QStringLiteral(
"vectorgeometry" );
47QString QgsSegmentizeByMaximumDistanceAlgorithm::outputName()
const
49 return QObject::tr(
"Segmentized" );
52QString QgsSegmentizeByMaximumDistanceAlgorithm::shortHelpString()
const
54 return QObject::tr(
"This algorithm segmentizes a geometry by converting curved sections to linear sections.\n\n"
55 "The segmentization is performed by specifying the maximum allowed offset distance between the original "
56 "curve and the segmentized representation.\n\n"
57 "Non-curved geometries will be retained without change." );
60QgsSegmentizeByMaximumDistanceAlgorithm *QgsSegmentizeByMaximumDistanceAlgorithm::createInstance()
const
62 return new QgsSegmentizeByMaximumDistanceAlgorithm();
65QList<int> QgsSegmentizeByMaximumDistanceAlgorithm::inputLayerTypes()
const
70void QgsSegmentizeByMaximumDistanceAlgorithm::initParameters(
const QVariantMap & )
72 std::unique_ptr< QgsProcessingParameterDistance > tolerance = std::make_unique< QgsProcessingParameterDistance >( QStringLiteral(
"DISTANCE" ),
73 QObject::tr(
"Maximum offset distance" ),
74 1.0, QStringLiteral(
"INPUT" ),
false, 0, 10000000.0 );
75 tolerance->setIsDynamic(
true );
77 tolerance->setDynamicLayerParameterName( QStringLiteral(
"INPUT" ) );
78 addParameter( tolerance.release() );
81bool QgsSegmentizeByMaximumDistanceAlgorithm::supportInPlaceEdit(
const QgsMapLayer *layer )
const
89 mTolerance = parameterAsDouble( parameters, QStringLiteral(
"DISTANCE" ), context );
91 if ( mDynamicTolerance )
92 mToleranceProperty = parameters.value( QStringLiteral(
"DISTANCE" ) ).value<
QgsProperty >();
103 double tolerance = mTolerance;
104 if ( mDynamicTolerance )
105 tolerance = mToleranceProperty.valueAsDouble( context.
expressionContext(), tolerance );
116QString QgsSegmentizeByMaximumAngleAlgorithm::name()
const
118 return QStringLiteral(
"segmentizebymaxangle" );
121QString QgsSegmentizeByMaximumAngleAlgorithm::displayName()
const
123 return QObject::tr(
"Segmentize by maximum angle" );
126QStringList QgsSegmentizeByMaximumAngleAlgorithm::tags()
const
128 return QObject::tr(
"straighten,linearize,densify,curves,curved,circular,angle" ).split(
',' );
131QString QgsSegmentizeByMaximumAngleAlgorithm::group()
const
133 return QObject::tr(
"Vector geometry" );
136QString QgsSegmentizeByMaximumAngleAlgorithm::groupId()
const
138 return QStringLiteral(
"vectorgeometry" );
141QString QgsSegmentizeByMaximumAngleAlgorithm::outputName()
const
143 return QObject::tr(
"Segmentized" );
146QString QgsSegmentizeByMaximumAngleAlgorithm::shortHelpString()
const
148 return QObject::tr(
"This algorithm segmentizes a geometry by converting curved sections to linear sections.\n\n"
149 "The segmentization is performed by specifying the maximum allowed radius angle between vertices "
150 "on the straightened geometry (e.g the angle of the arc created from the original arc center to consecutive "
151 "output vertices on the linearized geometry).\n\n"
152 "Non-curved geometries will be retained without change." );
155QgsSegmentizeByMaximumAngleAlgorithm *QgsSegmentizeByMaximumAngleAlgorithm::createInstance()
const
157 return new QgsSegmentizeByMaximumAngleAlgorithm();
160QList<int> QgsSegmentizeByMaximumAngleAlgorithm::inputLayerTypes()
const
165void QgsSegmentizeByMaximumAngleAlgorithm::initParameters(
const QVariantMap & )
167 std::unique_ptr< QgsProcessingParameterNumber > tolerance = std::make_unique< QgsProcessingParameterNumber >( QStringLiteral(
"ANGLE" ),
169 5.0,
false, 0, 360.0 );
170 tolerance->setIsDynamic(
true );
172 tolerance->setDynamicLayerParameterName( QStringLiteral(
"INPUT" ) );
173 addParameter( tolerance.release() );
176bool QgsSegmentizeByMaximumAngleAlgorithm::supportInPlaceEdit(
const QgsMapLayer *layer )
const
184 mTolerance = parameterAsDouble( parameters, QStringLiteral(
"ANGLE" ), context );
186 if ( mDynamicTolerance )
187 mToleranceProperty = parameters.value( QStringLiteral(
"ANGLE" ) ).value<
QgsProperty >();
198 double tolerance = mTolerance;
199 if ( mDynamicTolerance )
200 tolerance = mToleranceProperty.valueAsDouble( context.
expressionContext(), tolerance );
@ MaximumDifference
Maximum distance between an arbitrary point on the original curve and closest point on its approximat...
@ MaximumAngle
Maximum angle between generating radii (lines from arc center to output vertices)
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 convertToStraightSegment(double tolerance=M_PI/180., QgsAbstractGeometry::SegmentationToleranceType toleranceType=QgsAbstractGeometry::MaximumAngle)
Converts the geometry to straight line segments, if it is a curved geometry type.
Base class for all map layer types.
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.
@ Double
Double/float values.
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...
@ TypeVectorLine
Vector line layers.
@ TypeVectorPolygon
Vector polygon layers.
Definition for a property.
@ DoublePositive
Positive double value (including 0)
A store for object properties.
QList< QgsFeature > QgsFeatureList