24using namespace Qt::StringLiterals;
28QString QgsPointsLayerFromTableAlgorithm::name()
const
30 return u
"createpointslayerfromtable"_s;
33QString QgsPointsLayerFromTableAlgorithm::displayName()
const
35 return QObject::tr(
"Create points layer from table" );
38QStringList QgsPointsLayerFromTableAlgorithm::tags()
const
40 return QObject::tr(
"points,create,values,attributes" ).split(
',' );
43QString QgsPointsLayerFromTableAlgorithm::group()
const
45 return QObject::tr(
"Vector creation" );
48QString QgsPointsLayerFromTableAlgorithm::groupId()
const
50 return u
"vectorcreation"_s;
53QString QgsPointsLayerFromTableAlgorithm::shortHelpString()
const
55 return QObject::tr(
"This algorithm generates a point layer based on the coordinates from an input table." )
58 "The table must contain a field with the X coordinate of each point and another "
59 "one with the Y coordinate, as well as optional fields with Z and M values. A CRS "
60 "for the output layer has to be specified, and the coordinates in the table are "
61 "assumed to be expressed in the units used by that CRS. The attributes table of "
62 "the resulting layer will be the input table."
66QString QgsPointsLayerFromTableAlgorithm::shortDescription()
const
68 return QObject::tr(
"Generates a point layer based on the coordinates from an input table." );
76QgsPointsLayerFromTableAlgorithm *QgsPointsLayerFromTableAlgorithm::createInstance()
const
78 return new QgsPointsLayerFromTableAlgorithm();
81void QgsPointsLayerFromTableAlgorithm::initAlgorithm(
const QVariantMap & )
95 std::unique_ptr<QgsProcessingFeatureSource> featureSource( parameterAsSource( parameters, u
"INPUT"_s, context ) );
99 const QgsFields fields = featureSource->fields();
100 const QString xFieldName = parameterAsString( parameters, u
"XFIELD"_s, context );
101 const int xFieldIndex = fields.
lookupField( xFieldName );
102 if ( xFieldIndex < 0 )
105 const QString yFieldName = parameterAsString( parameters, u
"YFIELD"_s, context );
106 const int yFieldIndex = fields.
lookupField( yFieldName );
107 if ( yFieldIndex < 0 )
110 QString fieldName = parameterAsString( parameters, u
"ZFIELD"_s, context );
111 int zFieldIndex = -1;
112 if ( !fieldName.isEmpty() )
115 if ( zFieldIndex < 0 )
119 fieldName = parameterAsString( parameters, u
"MFIELD"_s, context );
120 int mFieldIndex = -1;
121 if ( !fieldName.isEmpty() )
124 if ( mFieldIndex < 0 )
129 if ( zFieldIndex >= 0 )
131 if ( mFieldIndex >= 0 )
141 const double step = featureSource->featureCount() > 0 ? 100.0 / featureSource->featureCount() : 1;
160 const double x = attrs.at( xFieldIndex ).toDouble( &xOk );
161 const double y = attrs.at( yFieldIndex ).toDouble( &yOk );
168 point.addZValue( attrs.at( zFieldIndex ).toDouble() );
171 point.addMValue( attrs.at( mFieldIndex ).toDouble() );
176 if ( !sink->addFeature( f ) )
185 outputs.insert( u
"OUTPUT"_s, dest );
@ Vector
Tables (i.e. vector layers with or without geometry). When used for a sink this indicates the sink ha...
@ VectorPoint
Vector point layers.
@ NoGeometry
Geometry is not required. It may still be returned if e.g. required for a filter condition.
@ 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.
Represents a coordinate reference system (CRS).
Wrapper for iterator of features from vector data provider or vector layer.
bool nextFeature(QgsFeature &f)
Fetch next feature and stores in f, returns true on success.
Wraps a request for features to a vector layer (or directly its vector data provider).
QgsFeatureRequest & setFlags(Qgis::FeatureRequestFlags flags)
Sets flags that affect how features will be fetched.
@ 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 setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
bool isCanceled() const
Tells whether the operation has been canceled already.
void setProgress(double progress)
Sets the current progress for the feedback object.
Container of fields for a vector layer.
Q_INVOKABLE int lookupField(const QString &fieldName) const
Looks up field's index from the field name.
A geometry is the spatial representation of a feature.
Point geometry type, with support for z-dimension and m-values.
Contains information about the context in which a processing algorithm is executed.
Custom exception class for processing related exceptions.
Base class for providing feedback from a processing algorithm.
A coordinate reference system parameter for processing algorithms.
A feature sink output for processing algorithms.
An input feature source (such as vector layers) parameter for processing algorithms.
A vector layer or feature source field parameter for processing algorithms.
static bool isNull(const QVariant &variant, bool silenceNullWarnings=false)
Returns true if the specified variant should be considered a NULL value.
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.