23 void QgsTransformAlgorithm::initParameters(
const QVariantMap & )
25 addParameter(
new QgsProcessingParameterCrs( QStringLiteral(
"TARGET_CRS" ), QObject::tr(
"Target CRS" ), QStringLiteral(
"EPSG:4326" ) ) );
27 std::unique_ptr< QgsProcessingParameterCoordinateOperation > crsOpParam = std::make_unique< QgsProcessingParameterCoordinateOperation >( QStringLiteral(
"OPERATION" ), QObject::tr(
"Coordinate operation" ),
28 QVariant(), QStringLiteral(
"INPUT" ), QStringLiteral(
"TARGET_CRS" ), QVariant(), QVariant(),
true );
30 addParameter( crsOpParam.release() );
38 QString QgsTransformAlgorithm::outputName()
const
40 return QObject::tr(
"Reprojected" );
48 QString QgsTransformAlgorithm::name()
const
50 return QStringLiteral(
"reprojectlayer" );
53 QString QgsTransformAlgorithm::displayName()
const
55 return QObject::tr(
"Reproject layer" );
58 QStringList QgsTransformAlgorithm::tags()
const
60 return QObject::tr(
"transform,reprojection,crs,srs,warp" ).split(
',' );
63 QString QgsTransformAlgorithm::group()
const
65 return QObject::tr(
"Vector general" );
68 QString QgsTransformAlgorithm::groupId()
const
70 return QStringLiteral(
"vectorgeneral" );
73 QString QgsTransformAlgorithm::shortHelpString()
const
75 return QObject::tr(
"This algorithm reprojects a vector layer. It creates a new layer with the same features "
76 "as the input one, but with geometries reprojected to a new CRS.\n\n"
77 "Attributes are not modified by this algorithm." );
80 QgsTransformAlgorithm *QgsTransformAlgorithm::createInstance()
const
82 return new QgsTransformAlgorithm();
87 prepareSource( parameters, context );
88 mDestCrs = parameterAsCrs( parameters, QStringLiteral(
"TARGET_CRS" ), context );
90 mCoordOp = parameterAsString( parameters, QStringLiteral(
"OPERATION" ), context );
97 if ( !mCreatedTransform )
99 mCreatedTransform =
true;
100 if ( !mCoordOp.isEmpty() )
101 mTransformContext.addCoordinateOperation( sourceCrs(), mDestCrs, mCoordOp,
false );
104 mTransform.disableFallbackOperationHandler(
true );
121 if ( !mWarnedAboutFallbackTransform && mTransform.fallbackOperationOccurred() )
123 feedback->
reportError( QObject::tr(
"An alternative, ballpark-only transform was used when transforming coordinates for one or more features. "
124 "(Possibly an incorrect choice of operation was made for transformations between these reference systems - check "
125 "that the selected operation is valid for the full extent of the input layer.)" ) );
126 mWarnedAboutFallbackTransform =
true;
132 feedback->
reportError( QObject::tr(
"Encountered a transform error when reprojecting feature with id %1." ).arg( f.
id() ) );
This class represents a coordinate reference system (CRS).
Custom exception class for Coordinate Reference System related exceptions.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
void clearGeometry()
Removes any geometry associated with the feature.
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.
OperationResult transform(const QgsCoordinateTransform &ct, QgsCoordinateTransform::TransformDirection direction=QgsCoordinateTransform::ForwardTransform, bool transformZ=false) SIP_THROW(QgsCsException)
Transforms this geometry as described by the coordinate transform ct.
Contains information about the context in which a processing algorithm is executed.
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context.
Flag
Flags controlling how QgsProcessingFeatureSource fetches features.
@ FlagSkipGeometryValidityChecks
Invalid geometry checks should always be skipped. This flag can be useful for algorithms which always...
Base class for providing feedback from a processing algorithm.
virtual void reportError(const QString &error, bool fatalError=false)
Reports that the algorithm encountered an error while executing.
A coordinate reference system parameter for processing algorithms.
@ FlagAdvanced
Parameter is an advanced parameter which should be hidden from users by default.
QList< QgsFeature > QgsFeatureList
const QgsCoordinateReferenceSystem & outputCrs