25QString QgsPointsAlongGeometryAlgorithm::name()
 const 
   27  return QStringLiteral( 
"pointsalonglines" );
 
   30QString QgsPointsAlongGeometryAlgorithm::displayName()
 const 
   32  return QObject::tr( 
"Points along geometry" );
 
   35QStringList QgsPointsAlongGeometryAlgorithm::tags()
 const 
   37  return QObject::tr( 
"create,interpolate,points,lines,regular,distance,by" ).split( 
',' );
 
   40QString QgsPointsAlongGeometryAlgorithm::group()
 const 
   42  return QObject::tr( 
"Vector geometry" );
 
   45QString QgsPointsAlongGeometryAlgorithm::groupId()
 const 
   47  return QStringLiteral( 
"vectorgeometry" );
 
   50QString QgsPointsAlongGeometryAlgorithm::outputName()
 const 
   52  return QObject::tr( 
"Interpolated points" );
 
   55QString QgsPointsAlongGeometryAlgorithm::shortHelpString()
 const 
   57  return QObject::tr( 
"This algorithm creates a points layer, with points distributed along the lines of an " 
   58                      "input vector layer. The distance between points (measured along the line) is defined as a parameter.\n\n" 
   59                      "Start and end offset distances can be defined, so the first and last point will not fall exactly on the line's " 
   60                      "first and last nodes. These start and end offsets are defined as distances, measured along the line from the first and last " 
   61                      "nodes of the lines." );
 
   64QString QgsPointsAlongGeometryAlgorithm::shortDescription()
 const 
   66  return QObject::tr( 
"Creates regularly spaced points along line features." );
 
   74QList<int> QgsPointsAlongGeometryAlgorithm::inputLayerTypes()
 const 
   94QgsFields QgsPointsAlongGeometryAlgorithm::outputFields( 
const QgsFields &inputFields )
 const 
   97  newFields.
append( 
QgsField( QStringLiteral( 
"distance" ), QMetaType::Type::Double ) );
 
   98  newFields.
append( 
QgsField( QStringLiteral( 
"angle" ), QMetaType::Type::Double ) );
 
  102QgsPointsAlongGeometryAlgorithm *QgsPointsAlongGeometryAlgorithm::createInstance()
 const 
  104  return new QgsPointsAlongGeometryAlgorithm();
 
  107void QgsPointsAlongGeometryAlgorithm::initParameters( 
const QVariantMap & )
 
  109  auto distance = std::make_unique<QgsProcessingParameterDistance>( QStringLiteral( 
"DISTANCE" ), QObject::tr( 
"Distance" ), 1.0, QStringLiteral( 
"INPUT" ), 
false, 0 );
 
  110  distance->setIsDynamic( 
true );
 
  112  distance->setDynamicLayerParameterName( QStringLiteral( 
"INPUT" ) );
 
  113  addParameter( distance.release() );
 
  115  auto startOffset = std::make_unique<QgsProcessingParameterDistance>( QStringLiteral( 
"START_OFFSET" ), QObject::tr( 
"Start offset" ), 0.0, QStringLiteral( 
"INPUT" ), 
false, 0 );
 
  116  startOffset->setIsDynamic( 
true );
 
  118  startOffset->setDynamicLayerParameterName( QStringLiteral( 
"INPUT" ) );
 
  119  addParameter( startOffset.release() );
 
  121  auto endOffset = std::make_unique<QgsProcessingParameterDistance>( QStringLiteral( 
"END_OFFSET" ), QObject::tr( 
"End offset" ), 0.0, QStringLiteral( 
"INPUT" ), 
false, 0 );
 
  122  endOffset->setIsDynamic( 
true );
 
  124  endOffset->setDynamicLayerParameterName( QStringLiteral( 
"INPUT" ) );
 
  125  addParameter( endOffset.release() );
 
  128QIcon QgsPointsAlongGeometryAlgorithm::icon()
 const 
  133QString QgsPointsAlongGeometryAlgorithm::svgIconPath()
 const 
  151  mDistance = parameterAsDouble( parameters, QStringLiteral( 
"DISTANCE" ), context );
 
  153  if ( mDynamicDistance )
 
  154    mDistanceProperty = parameters.value( QStringLiteral( 
"DISTANCE" ) ).value<
QgsProperty>();
 
  156  mStartOffset = parameterAsDouble( parameters, QStringLiteral( 
"START_OFFSET" ), context );
 
  158  if ( mDynamicStartOffset )
 
  159    mStartOffsetProperty = parameters.value( QStringLiteral( 
"START_OFFSET" ) ).value<
QgsProperty>();
 
  161  mEndOffset = parameterAsDouble( parameters, QStringLiteral( 
"END_OFFSET" ), context );
 
  163  if ( mDynamicEndOffset )
 
  164    mEndOffsetProperty = parameters.value( QStringLiteral( 
"END_OFFSET" ) ).value<
QgsProperty>();
 
  176    double distance = mDistance;
 
  177    if ( mDynamicDistance )
 
  178      distance = mDistanceProperty.valueAsDouble( context.
expressionContext(), distance );
 
  182    double startOffset = mStartOffset;
 
  183    if ( mDynamicStartOffset )
 
  186    double endOffset = mEndOffset;
 
  187    if ( mDynamicEndOffset )
 
  191                                                                              : geometry.
length() - endOffset;
 
  193    double currentDistance = startOffset;
 
  195    out.reserve( 
static_cast<int>( std::ceil( ( totalLength - startOffset ) / distance ) ) );
 
  196    while ( currentDistance <= totalLength )
 
  203      outAttr << currentDistance << 
angle;
 
  205      out.append( outputFeature );
 
  206      currentDistance += distance;
 
  215    outAttr << QVariant() << QVariant();
 
ProcessingSourceType
Processing data source types.
 
@ VectorPoint
Vector point layers.
 
@ VectorPolygon
Vector polygon layers.
 
@ VectorLine
Vector line layers.
 
@ RegeneratesPrimaryKey
Algorithm always drops any existing primary keys or FID values and regenerates them in outputs.
 
QFlags< ProcessingAlgorithmDocumentationFlag > ProcessingAlgorithmDocumentationFlags
Flags describing algorithm behavior for documentation purposes.
 
@ SkipGeometryValidityChecks
Invalid geometry checks should always be skipped. This flag can be useful for algorithms which always...
 
WkbType
The WKB type describes the number of dimensions a geometry has.
 
QFlags< ProcessingFeatureSourceFlag > ProcessingFeatureSourceFlags
Flags which control how QgsProcessingFeatureSource fetches features.
 
virtual double perimeter() const
Returns the planar, 2-dimensional perimeter of the geometry.
 
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
 
static QString iconPath(const QString &iconFile)
Returns path to the desired icon file.
 
QFlags< SinkFlag > SinkFlags
 
@ RegeneratePrimaryKey
This flag indicates, that a primary key field cannot be guaranteed to be unique and the sink should i...
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
void setAttributes(const QgsAttributes &attrs)
Sets the feature's attributes.
 
bool hasGeometry() const
Returns true if the feature has an associated geometry.
 
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
 
bool isCanceled() const
Tells whether the operation has been canceled already.
 
Encapsulate a field in an attribute table or data source.
 
Container of fields for a vector layer.
 
bool append(const QgsField &field, Qgis::FieldOrigin origin=Qgis::FieldOrigin::Provider, int originIndex=-1)
Appends a field.
 
A geometry is the spatial representation of a feature.
 
double length() const
Returns the planar, 2-dimensional length of geometry.
 
QgsGeometry interpolate(double distance) const
Returns an interpolated point on the geometry at the specified distance.
 
const QgsAbstractGeometry * constGet() const
Returns a non-modifiable (const) reference to the underlying abstract geometry primitive.
 
double interpolateAngle(double distance) const
Returns the angle parallel to the linestring or polygon boundary at the specified distance along the ...
 
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...
 
static QgsFields combineFields(const QgsFields &fieldsA, const QgsFields &fieldsB, const QString &fieldsBPrefix=QString())
Combines two field lists, avoiding duplicate field names (in a case-insensitive manner).
 
Definition for a property.
 
@ DoublePositive
Positive double value (including 0)
 
A store for object properties.
 
double valueAsDouble(const QgsExpressionContext &context, double defaultValue=0.0, bool *ok=nullptr) const
Calculates the current value of the property and interprets it as a double.
 
static Qgis::WkbType addM(Qgis::WkbType type)
Adds the m dimension to a WKB type and returns the new type.
 
static Qgis::WkbType addZ(Qgis::WkbType type)
Adds the z dimension to a WKB type and returns the new type.
 
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.
 
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)
 
QList< QgsFeature > QgsFeatureList