Skip to content

Commit 7a09580

Browse files
committed
Fix Refactor Fields error if layer has no features
1 parent f85ff26 commit 7a09580

File tree

1 file changed

+29
-26
lines changed

1 file changed

+29
-26
lines changed

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

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -117,32 +117,35 @@ def processAlgorithm(self, progress):
117117
inFeat = QgsFeature()
118118
outFeat = QgsFeature()
119119
features = vector.features(layer)
120-
total = 100.0 / len(features)
121-
for current, inFeat in enumerate(features):
122-
rownum = current + 1
123-
124-
geometry = inFeat.geometry()
125-
if geometry is not None:
126-
outFeat.setGeometry(geometry)
127-
128-
attrs = []
129-
for i in xrange(0, len(mapping)):
130-
field_def = mapping[i]
131-
expression = expressions[i]
132-
exp_context.setFeature(inFeat)
133-
exp_context.lastScope().setVariable("row_number", rownum)
134-
value = expression.evaluate(exp_context)
135-
if expression.hasEvalError():
136-
calculationSuccess = False
137-
error = expression.evalErrorString()
138-
break
139-
140-
attrs.append(value)
141-
outFeat.setAttributes(attrs)
142-
143-
writer.addFeature(outFeat)
144-
145-
progress.setPercentage(int(current * total))
120+
if len(features):
121+
total = 100.0 / len(features)
122+
for current, inFeat in enumerate(features):
123+
rownum = current + 1
124+
125+
geometry = inFeat.geometry()
126+
if geometry is not None:
127+
outFeat.setGeometry(geometry)
128+
129+
attrs = []
130+
for i in xrange(0, len(mapping)):
131+
field_def = mapping[i]
132+
expression = expressions[i]
133+
exp_context.setFeature(inFeat)
134+
exp_context.lastScope().setVariable("row_number", rownum)
135+
value = expression.evaluate(exp_context)
136+
if expression.hasEvalError():
137+
calculationSuccess = False
138+
error = expression.evalErrorString()
139+
break
140+
141+
attrs.append(value)
142+
outFeat.setAttributes(attrs)
143+
144+
writer.addFeature(outFeat)
145+
146+
progress.setPercentage(int(current * total))
147+
else:
148+
progress.setPercentage(100)
146149

147150
del writer
148151

0 commit comments

Comments
 (0)