27 QString QgsSplitLinesByLengthAlgorithm::name()
const
29 return QStringLiteral(
"splitlinesbylength" );
32 QString QgsSplitLinesByLengthAlgorithm::displayName()
const
34 return QObject::tr(
"Split lines by maximum length" );
37 QStringList QgsSplitLinesByLengthAlgorithm::tags()
const
39 return QObject::tr(
"segments,parts,distance,cut,chop" ).split(
',' );
42 QString QgsSplitLinesByLengthAlgorithm::group()
const
44 return QObject::tr(
"Vector geometry" );
47 QString QgsSplitLinesByLengthAlgorithm::groupId()
const
49 return QStringLiteral(
"vectorgeometry" );
52 QString QgsSplitLinesByLengthAlgorithm::shortHelpString()
const
54 return QObject::tr(
"This algorithm takes a line (or curve) layer and splits each feature into multiple parts, "
55 "where each part is of a specified maximum length.\n\n"
56 "Z and M values at the start and end of the new line substrings are linearly interpolated from existing values." );
59 QString QgsSplitLinesByLengthAlgorithm::shortDescription()
const
61 return QObject::tr(
"Splits lines into parts which are no longer than a specified length." );
64 QList<int> QgsSplitLinesByLengthAlgorithm::inputLayerTypes()
const
74 QgsSplitLinesByLengthAlgorithm *QgsSplitLinesByLengthAlgorithm::createInstance()
const
76 return new QgsSplitLinesByLengthAlgorithm();
79 void QgsSplitLinesByLengthAlgorithm::initParameters(
const QVariantMap & )
81 std::unique_ptr< QgsProcessingParameterDistance > length = std::make_unique< QgsProcessingParameterDistance >( QStringLiteral(
"LENGTH" ),
82 QObject::tr(
"Maximum line length" ), 10, QStringLiteral(
"INPUT" ),
false, 0 );
83 length->setIsDynamic(
true );
85 length->setDynamicLayerParameterName( QStringLiteral(
"INPUT" ) );
86 addParameter( length.release() );
91 mLength = parameterAsDouble( parameters, QStringLiteral(
"LENGTH" ), context );
94 mLengthProperty = parameters.value( QStringLiteral(
"LENGTH" ) ).value<
QgsProperty >();
99 QString QgsSplitLinesByLengthAlgorithm::outputName()
const
101 return QObject::tr(
"Split" );
117 double distance = mLength;
118 if ( mDynamicLength )
119 distance = mLengthProperty.valueAsDouble( context.
expressionContext(), distance );
127 const QgsCurve *part = qgsgeometry_cast< const QgsCurve * >( *it );
132 double end = distance;
133 const double length = part->
length();
134 while ( start < length )
139 features << outputFeature;