Skip to content

Commit

Permalink
do not index input point cloud layers in pdal algorithms
Browse files Browse the repository at this point in the history
  • Loading branch information
alexbruy authored and wonder-sk committed Mar 30, 2023
1 parent 48fcb57 commit 3104c10
Show file tree
Hide file tree
Showing 21 changed files with 37 additions and 31 deletions.
Expand Up @@ -921,9 +921,10 @@ Evaluates the parameter with matching ``name`` to a matrix/table of values.
Tables are collapsed to a 1 dimensional list.
%End

QList< QgsMapLayer *> parameterAsLayerList( const QVariantMap &parameters, const QString &name, QgsProcessingContext &context ) const;
QList< QgsMapLayer *> parameterAsLayerList( const QVariantMap &parameters, const QString &name, QgsProcessingContext &context, QgsProcessing::LayerOptionsFlags flags = QgsProcessing::LayerOptionsFlags() ) const;
%Docstring
Evaluates the parameter with matching ``name`` to a list of map layers.
The ``flags`` are used to set options for loading layers (e.g. skip index generation).
%End

QStringList parameterAsFileList( const QVariantMap &parameters, const QString &name, QgsProcessingContext &context ) const;
Expand Down
Expand Up @@ -1434,14 +1434,16 @@ Tables are collapsed to a 1 dimensional list.
.. versionadded:: 3.4
%End

static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessing::LayerOptionsFlags flags = QgsProcessing::LayerOptionsFlags() );
%Docstring
Evaluates the parameter with matching ``definition`` to a list of map layers.
The ``flags`` are used to set options for loading layers (e.g. skip index generation).
%End

static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context, QgsProcessing::LayerOptionsFlags flags = QgsProcessing::LayerOptionsFlags() );
%Docstring
Evaluates the parameter with matching ``definition`` and ``value`` to a list of map layers.
The ``flags`` are used to set options for loading layers (e.g. skip index generation).

.. versionadded:: 3.4
%End
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/pdal/qgsalgorithmpdalboundary.cpp
Expand Up @@ -69,7 +69,7 @@ QStringList QgsPdalBoundaryAlgorithm::createArgumentLists( const QVariantMap &pa
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/pdal/qgsalgorithmpdalbuildvpc.cpp
Expand Up @@ -67,7 +67,7 @@ QStringList QgsPdalBuildVpcAlgorithm::createArgumentLists( const QVariantMap &pa
{
Q_UNUSED( feedback );

const QList< QgsMapLayer * > layers = parameterAsLayerList( parameters, QStringLiteral( "LAYERS" ), context );
const QList< QgsMapLayer * > layers = parameterAsLayerList( parameters, QStringLiteral( "LAYERS" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( layers.empty() )
{
feedback->reportError( QObject::tr( "No layers selected" ), true );
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/pdal/qgsalgorithmpdalclip.cpp
Expand Up @@ -67,7 +67,7 @@ void QgsPdalClipAlgorithm::initAlgorithm( const QVariantMap & )

QStringList QgsPdalClipAlgorithm::createArgumentLists( const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback )
{
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
Expand Up @@ -67,7 +67,7 @@ QStringList QgsPdalConvertFormatAlgorithm::createArgumentLists( const QVariantMa
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/pdal/qgsalgorithmpdaldensity.cpp
Expand Up @@ -77,7 +77,7 @@ QStringList QgsPdalDensityAlgorithm::createArgumentLists( const QVariantMap &par
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
Expand Up @@ -93,7 +93,7 @@ QStringList QgsPdalExportRasterAlgorithm::createArgumentLists( const QVariantMap
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
Expand Up @@ -77,7 +77,7 @@ QStringList QgsPdalExportRasterTinAlgorithm::createArgumentLists( const QVariant
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
Expand Up @@ -83,7 +83,7 @@ QStringList QgsPdalExportVectorAlgorithm::createArgumentLists( const QVariantMap
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/pdal/qgsalgorithmpdalfilter.cpp
Expand Up @@ -68,7 +68,7 @@ QStringList QgsPdalFilterAlgorithm::createArgumentLists( const QVariantMap &para
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
Expand Up @@ -68,7 +68,7 @@ QStringList QgsPdalFixProjectionAlgorithm::createArgumentLists( const QVariantMa
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
Expand Up @@ -131,7 +131,7 @@ QStringList QgsPdalInformationAlgorithm::createArgumentLists( const QVariantMap
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/pdal/qgsalgorithmpdalmerge.cpp
Expand Up @@ -67,7 +67,7 @@ QStringList QgsPdalMergeAlgorithm::createArgumentLists( const QVariantMap &param
{
Q_UNUSED( feedback );

const QList< QgsMapLayer * > layers = parameterAsLayerList( parameters, QStringLiteral( "LAYERS" ), context );
const QList< QgsMapLayer * > layers = parameterAsLayerList( parameters, QStringLiteral( "LAYERS" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( layers.empty() )
{
feedback->reportError( QObject::tr( "No layers selected" ), true );
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/pdal/qgsalgorithmpdalreproject.cpp
Expand Up @@ -74,7 +74,7 @@ QStringList QgsPdalReprojectAlgorithm::createArgumentLists( const QVariantMap &p
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/pdal/qgsalgorithmpdalthin.cpp
Expand Up @@ -69,7 +69,7 @@ QStringList QgsPdalThinAlgorithm::createArgumentLists( const QVariantMap &parame
{
Q_UNUSED( feedback );

QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context );
QgsPointCloudLayer *layer = parameterAsPointCloudLayer( parameters, QStringLiteral( "INPUT" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( !layer )
throw QgsProcessingException( invalidPointCloudError( parameters, QStringLiteral( "INPUT" ) ) );

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/pdal/qgsalgorithmpdaltile.cpp
Expand Up @@ -74,7 +74,7 @@ QStringList QgsPdalTileAlgorithm::createArgumentLists( const QVariantMap &parame
{
Q_UNUSED( feedback );

const QList< QgsMapLayer * > layers = parameterAsLayerList( parameters, QStringLiteral( "LAYERS" ), context );
const QList< QgsMapLayer * > layers = parameterAsLayerList( parameters, QStringLiteral( "LAYERS" ), context, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
if ( layers.empty() )
{
feedback->reportError( QObject::tr( "No layers selected" ), true );
Expand Down
4 changes: 2 additions & 2 deletions src/core/processing/qgsprocessingalgorithm.cpp
Expand Up @@ -820,9 +820,9 @@ QVariantList QgsProcessingAlgorithm::parameterAsMatrix( const QVariantMap &param
return QgsProcessingParameters::parameterAsMatrix( parameterDefinition( name ), parameters, context );
}

QList<QgsMapLayer *> QgsProcessingAlgorithm::parameterAsLayerList( const QVariantMap &parameters, const QString &name, QgsProcessingContext &context ) const
QList<QgsMapLayer *> QgsProcessingAlgorithm::parameterAsLayerList( const QVariantMap &parameters, const QString &name, QgsProcessingContext &context, QgsProcessing::LayerOptionsFlags flags ) const
{
return QgsProcessingParameters::parameterAsLayerList( parameterDefinition( name ), parameters, context );
return QgsProcessingParameters::parameterAsLayerList( parameterDefinition( name ), parameters, context, flags );
}

QStringList QgsProcessingAlgorithm::parameterAsFileList( const QVariantMap &parameters, const QString &name, QgsProcessingContext &context ) const
Expand Down
3 changes: 2 additions & 1 deletion src/core/processing/qgsprocessingalgorithm.h
Expand Up @@ -925,8 +925,9 @@ class CORE_EXPORT QgsProcessingAlgorithm

/**
* Evaluates the parameter with matching \a name to a list of map layers.
* The \a flags are used to set options for loading layers (e.g. skip index generation).
*/
QList< QgsMapLayer *> parameterAsLayerList( const QVariantMap &parameters, const QString &name, QgsProcessingContext &context ) const;
QList< QgsMapLayer *> parameterAsLayerList( const QVariantMap &parameters, const QString &name, QgsProcessingContext &context, QgsProcessing::LayerOptionsFlags flags = QgsProcessing::LayerOptionsFlags() ) const;

/**
* Evaluates the parameter with matching \a name to a list of files (for QgsProcessingParameterMultipleLayers in QgsProcessing:TypeFile mode).
Expand Down
16 changes: 8 additions & 8 deletions src/core/processing/qgsprocessingparameters.cpp
Expand Up @@ -1752,15 +1752,15 @@ QVariantList QgsProcessingParameters::parameterAsMatrix( const QgsProcessingPara
return result;
}

QList<QgsMapLayer *> QgsProcessingParameters::parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context )
QList<QgsMapLayer *> QgsProcessingParameters::parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessing::LayerOptionsFlags flags )
{
if ( !definition )
return QList<QgsMapLayer *>();

return parameterAsLayerList( definition, parameters.value( definition->name() ), context );
return parameterAsLayerList( definition, parameters.value( definition->name() ), context, flags );
}

QList<QgsMapLayer *> QgsProcessingParameters::parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
QList<QgsMapLayer *> QgsProcessingParameters::parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context, QgsProcessing::LayerOptionsFlags flags )
{
if ( !definition )
return QList<QgsMapLayer *>();
Expand All @@ -1774,7 +1774,7 @@ QList<QgsMapLayer *> QgsProcessingParameters::parameterAsLayerList( const QgsPro
QList<QgsMapLayer *> layers;

std::function< void( const QVariant &var ) > processVariant;
processVariant = [ &layers, &context, &definition, &processVariant ]( const QVariant & var )
processVariant = [ &layers, &context, &definition, &processVariant, flags ]( const QVariant & var )
{
if ( var.type() == QVariant::List )
{
Expand Down Expand Up @@ -1810,7 +1810,7 @@ QList<QgsMapLayer *> QgsProcessingParameters::parameterAsLayerList( const QgsPro
}
else
{
QgsMapLayer *alayer = QgsProcessingUtils::mapLayerFromString( var.toString(), context );
QgsMapLayer *alayer = QgsProcessingUtils::mapLayerFromString( var.toString(), context, flags );
if ( alayer )
layers << alayer;
}
Expand Down Expand Up @@ -4156,7 +4156,7 @@ bool QgsProcessingParameterMultipleLayers::checkValueIsAcceptable( const QVarian
return true;

if ( mLayerType != QgsProcessing::TypeFile )
return QgsProcessingUtils::mapLayerFromString( input.toString(), *context );
return QgsProcessingUtils::mapLayerFromString( input.toString(), *context, true, QgsProcessingUtils::LayerHint::UnknownType, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration );
else
return true;
}
Expand All @@ -4179,7 +4179,7 @@ bool QgsProcessingParameterMultipleLayers::checkValueIsAcceptable( const QVarian
if ( qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( v ) ) )
continue;

if ( !QgsProcessingUtils::mapLayerFromString( v.toString(), *context ) )
if ( !QgsProcessingUtils::mapLayerFromString( v.toString(), *context, true, QgsProcessingUtils::LayerHint::UnknownType, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration ) )
return false;
}
}
Expand All @@ -4201,7 +4201,7 @@ bool QgsProcessingParameterMultipleLayers::checkValueIsAcceptable( const QVarian
const auto constToStringList = input.toStringList();
for ( const QString &v : constToStringList )
{
if ( !QgsProcessingUtils::mapLayerFromString( v, *context ) )
if ( !QgsProcessingUtils::mapLayerFromString( v, *context, true, QgsProcessingUtils::LayerHint::UnknownType, QgsProcessing::LayerOptionsFlag::SkipIndexGeneration ) )
return false;
}
}
Expand Down
6 changes: 4 additions & 2 deletions src/core/processing/qgsprocessingparameters.h
Expand Up @@ -1535,14 +1535,16 @@ class CORE_EXPORT QgsProcessingParameters

/**
* Evaluates the parameter with matching \a definition to a list of map layers.
* The \a flags are used to set options for loading layers (e.g. skip index generation).
*/
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessing::LayerOptionsFlags flags = QgsProcessing::LayerOptionsFlags() );

/**
* Evaluates the parameter with matching \a definition and \a value to a list of map layers.
* The \a flags are used to set options for loading layers (e.g. skip index generation).
* \since QGIS 3.4
*/
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context, QgsProcessing::LayerOptionsFlags flags = QgsProcessing::LayerOptionsFlags() );

/**
* Evaluates the parameter with matching \a definition to a list of files (for QgsProcessingParameterMultipleLayers in QgsProcessing:TypeFile mode).
Expand Down

0 comments on commit 3104c10

Please sign in to comment.