Skip to content

Commit 734bd69

Browse files
committed
[processing] Fix random selection algorithm when filter is set on layer
(cherry-picked from 31330dd)
1 parent 543df81 commit 734bd69

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

python/plugins/processing/algs/qgis/RandomSelection.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ def processAlgorithm(self, parameters, context, feedback):
9393
layer = self.parameterAsVectorLayer(parameters, self.INPUT, context)
9494
method = self.parameterAsEnum(parameters, self.METHOD, context)
9595

96-
featureCount = layer.featureCount()
96+
ids = layer.allFeatureIds()
9797
value = self.parameterAsInt(parameters, self.NUMBER, context)
9898

9999
if method == 0:
100-
if value > featureCount:
100+
if value > len(ids):
101101
raise QgsProcessingException(
102102
self.tr('Selected number is greater than feature count. '
103103
'Choose a lower value and try again.'))
@@ -106,9 +106,9 @@ def processAlgorithm(self, parameters, context, feedback):
106106
raise QgsProcessingException(
107107
self.tr("Percentage can't be greater than 100. Set a "
108108
"different value and try again."))
109-
value = int(round(value / 100.0, 4) * featureCount)
109+
value = int(round(value / 100.0, 4) * len(ids))
110110

111-
selran = random.sample(list(range(featureCount)), value)
111+
selran = random.sample(ids, value)
112112

113113
layer.selectByIds(selran)
114114
return {self.OUTPUT: parameters[self.INPUT]}

0 commit comments

Comments
 (0)