Skip to content

Commit cf73522

Browse files
alexbruynyalldawson
authored andcommittedJul 10, 2018
[processing] log cases when subset is smaller than requested number of
features (cherry-picked from b72f5d1)
1 parent 5ae2430 commit cf73522

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed
 

‎python/plugins/processing/algs/qgis/RandomExtractWithinSubsets.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,12 @@ def processAlgorithm(self, parameters, context, feedback):
125125
classes[attrs[index]].append(feature)
126126
feedback.setProgress(int(i * total))
127127

128-
for subset in classes.values():
128+
for k, subset in classes.items():
129129
selValue = value if method != 1 else int(round(value * len(subset), 0))
130-
selran.extend(random.sample(subset, min(selValue, len(subset))))
130+
if selValue > len(subset):
131+
selValue = len(subset)
132+
feedback.reportError(self.tr('Subset "{}" is smaller than requested number of features.'.format(k)))
133+
selran.extend(random.sample(subset, selValue))
131134

132135
total = 100.0 / featureCount if featureCount else 1
133136
for (i, feat) in enumerate(selran):

‎python/plugins/processing/algs/qgis/RandomSelectionWithinSubsets.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,15 @@ def processAlgorithm(self, parameters, context, feedback):
133133
feedback.setProgress(int(i * total))
134134

135135
selran = []
136-
for subset in classes.values():
136+
for k, subset in classes.items():
137137
if feedback.isCanceled():
138138
break
139139

140140
selValue = value if method != 1 else int(round(value * len(subset), 0))
141-
selran.extend(random.sample(subset, min(selValue, len(subset))))
141+
if selValue > len(subset):
142+
selValue = len(subset)
143+
feedback.reportError(self.tr('Subset "{}" is smaller than requested number of features.'.format(k)))
144+
selran.extend(random.sample(subset, selValue))
142145

143146
layer.selectByIds(selran)
144147
else:

0 commit comments

Comments
 (0)