@@ -49,11 +49,18 @@ QString QgsRandomPointsExtentAlgorithm::groupId() const
49
49
50
50
void QgsRandomPointsExtentAlgorithm::initAlgorithm ( const QVariantMap & )
51
51
{
52
+
52
53
addParameter ( new QgsProcessingParameterExtent ( QStringLiteral ( " EXTENT" ), QObject::tr ( " Input extent" ) ) );
53
- addParameter ( new QgsProcessingParameterNumber ( QStringLiteral ( " NUM_POINTS" ), QStringLiteral ( " Number of points" ), QgsProcessingParameterNumber::Integer, 1 , false , 1 ) );
54
- addParameter ( new QgsProcessingParameterCrs ( QStringLiteral ( " CRS" ), QObject::tr ( " Target CRS" ), QStringLiteral ( " ProjectCrs" ) ) );
55
- addParameter ( new QgsProcessingParameterDistance ( QStringLiteral ( " MIN_DISTANCE" ), QObject::tr ( " Minimum distance between points" ), 0 , QStringLiteral ( " CRS" ), true , 0 ) );
56
- addParameter ( new QgsProcessingParameterNumber ( QStringLiteral ( " MAX_ATTEMPTS" ), QStringLiteral ( " Maximum number of attempts given the minimum distance" ), QgsProcessingParameterNumber::Integer, 200 , true , 1 ) );
54
+ addParameter ( new QgsProcessingParameterNumber ( QStringLiteral ( " POINTS_NUMBER" ), QObject::tr ( " Number of points" ), QgsProcessingParameterNumber::Integer, 1 , false , 1 ) );
55
+ addParameter ( new QgsProcessingParameterDistance ( QStringLiteral ( " MIN_DISTANCE" ), QObject::tr ( " Minimum distance between points" ), 0 , QStringLiteral ( " TARGET_CRS" ), true , 0 ) );
56
+
57
+ std::unique_ptr< QgsProcessingParameterCrs > crs_param = qgis::make_unique< QgsProcessingParameterCrs >( QStringLiteral ( " TARGET_CRS" ), QObject::tr ( " Target CRS" ), QStringLiteral ( " ProjectCrs" ), true ) ;
58
+ crs_param->setFlags ( crs_param->flags () | QgsProcessingParameterDefinition::FlagAdvanced );
59
+ addParameter ( crs_param.release () );
60
+ std::unique_ptr< QgsProcessingParameterNumber > maxAttempts_param = qgis::make_unique< QgsProcessingParameterNumber >( QStringLiteral ( " MAX_ATTEMPTS" ), QObject::tr ( " Maximum number of search attempts given the minimum distance" ), QgsProcessingParameterNumber::Integer, 200 , true , 1 );
61
+ maxAttempts_param->setFlags ( maxAttempts_param->flags () | QgsProcessingParameterDefinition::FlagAdvanced );
62
+ addParameter ( maxAttempts_param.release () );
63
+
57
64
addParameter ( new QgsProcessingParameterFeatureSink ( QStringLiteral ( " OUTPUT" ), QObject::tr ( " Random points" ), QgsProcessing::TypeVectorPoint ) );
58
65
}
59
66
@@ -76,9 +83,17 @@ QgsRandomPointsExtentAlgorithm *QgsRandomPointsExtentAlgorithm::createInstance()
76
83
77
84
bool QgsRandomPointsExtentAlgorithm::prepareAlgorithm ( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback * )
78
85
{
79
- mCrs = parameterAsCrs ( parameters, QStringLiteral ( " CRS" ), context );
86
+ QgsCoordinateReferenceSystem extent_crs = parameterAsExtentCrs ( parameters, QStringLiteral ( " EXTENT" ), context);
87
+ QgsCoordinateReferenceSystem user_crs = parameterAsCrs ( parameters, QStringLiteral ( " TARGET_CRS" ), context );
88
+
89
+ // prefer user crs over extent/project crs if defined
90
+ if ( extent_crs != user_crs )
91
+ mCrs = user_crs;
92
+ else
93
+ mCrs = extent_crs;
94
+
80
95
mExtent = parameterAsExtent ( parameters, QStringLiteral ( " EXTENT" ), context, mCrs );
81
- mNumPoints = parameterAsInt ( parameters, QStringLiteral ( " NUM_POINTS " ), context );
96
+ mNumPoints = parameterAsInt ( parameters, QStringLiteral ( " POINTS_NUMBER " ), context );
82
97
mDistance = parameterAsDouble ( parameters, QStringLiteral ( " MIN_DISTANCE" ), context );
83
98
mMaxAttempts = parameterAsInt ( parameters, QStringLiteral ( " MAX_ATTEMPTS" ), context );
84
99
0 commit comments