Skip to content

Commit

Permalink
Merge pull request #5177 from alexbruy/fix-zero-division
Browse files Browse the repository at this point in the history
[processing] prevent float division by zero in QGIS algorithms
  • Loading branch information
alexbruy committed Sep 12, 2017
2 parents 592151f + 8c46e4b commit 70cd0e4
Show file tree
Hide file tree
Showing 86 changed files with 100 additions and 100 deletions.
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/AddTableField.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ def processAlgorithm(self, progress):
layer.crs()) layer.crs())
outFeat = QgsFeature() outFeat = QgsFeature()
features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, feat in enumerate(features): for current, feat in enumerate(features):
progress.setPercentage(int(current * total)) progress.setPercentage(int(current * total))
geom = feat.geometry() geom = feat.geometry()
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def processAlgorithm(self, progress):
vlayer.crs()) vlayer.crs())
outFeat = QgsFeature() outFeat = QgsFeature()
features = vector.features(vlayer) features = vector.features(vlayer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, feat in enumerate(features): for current, feat in enumerate(features):
progress.setPercentage(int(current * total)) progress.setPercentage(int(current * total))
geom = feat.geometry() geom = feat.geometry()
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def processAlgorithm(self, progress):


features = vector.features(layer) features = vector.features(layer)
count = len(features) count = len(features)
total = 100.0 / float(count) total = 100.0 / count if count > 0 else 1
for current, ft in enumerate(features): for current, ft in enumerate(features):
value = ft[fieldName] value = ft[fieldName]
if value or value == 0: if value or value == 0:
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def processAlgorithm(self, progress):


features = vector.features(layer) features = vector.features(layer)
count = len(features) count = len(features)
total = 100.0 / count total = 100.0 / count if count > 0 else 1
for current, ft in enumerate(features): for current, ft in enumerate(features):
value = ft[fieldName] value = ft[fieldName]
if value: if value:
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/Boundary.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def processAlgorithm(self, progress):
layer.crs()) layer.crs())


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1


for current, input_feature in enumerate(features): for current, input_feature in enumerate(features):
output_feature = input_feature output_feature = input_feature
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/BoundingBox.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def processAlgorithm(self, progress):
layer.crs()) layer.crs())


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1


for current, input_feature in enumerate(features): for current, input_feature in enumerate(features):
output_feature = input_feature output_feature = input_feature
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/Buffer.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def buffering(progress, writer, distance, field, useField, layer, dissolve,


current = 0 current = 0
features = vector.features(layer) features = vector.features(layer)
total = 100.0 / float(len(features)) total = 100.0 / len(features) if len(features) > 0 else 1


# With dissolve # With dissolve
if dissolve: if dissolve:
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/Centroids.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def processAlgorithm(self, progress):
outFeat = QgsFeature() outFeat = QgsFeature()


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, feat in enumerate(features): for current, feat in enumerate(features):
inGeom = feat.geometry() inGeom = feat.geometry()
attrs = feat.attributes() attrs = feat.attributes()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/CheckValidity.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def doCheck(self, progress):
error_count = 0 error_count = 0


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, inFeat in enumerate(features): for current, inFeat in enumerate(features):
geom = QgsGeometry(inFeat.geometry()) geom = QgsGeometry(inFeat.geometry())
attrs = inFeat.attributes() attrs = inFeat.attributes()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/Clip.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ def processAlgorithm(self, progress):
continue continue


if single_clip_feature: if single_clip_feature:
total = 100.0 / len(input_features) total = 100.0 / len(features) if len(features) > 0 else 1
else: else:
total = 0 total = 0


Expand Down
4 changes: 2 additions & 2 deletions python/plugins/processing/algs/qgis/ConcaveHull.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def processAlgorithm(self, progress):
# Get max edge length from Delaunay triangles # Get max edge length from Delaunay triangles
progress.setText(self.tr('Computing edges max length...')) progress.setText(self.tr('Computing edges max length...'))
features = delaunay_layer.getFeatures() features = delaunay_layer.getFeatures()
counter = 50. / delaunay_layer.featureCount() counter = 50. / delaunay_layer.featureCount() if delaunay_layer.featureCount() > 0 else 1
lengths = [] lengths = []
edges = {} edges = {}
for feat in features: for feat in features:
Expand All @@ -90,7 +90,7 @@ def processAlgorithm(self, progress):


# Get features with longest edge longer than alpha*max_length # Get features with longest edge longer than alpha*max_length
progress.setText(self.tr('Removing features...')) progress.setText(self.tr('Removing features...'))
counter = 50. / len(edges) counter = 50. / len(edges) if len(edges) > 0 else 1
i = 0 i = 0
ids = [] ids = []
for id, max_len in edges.iteritems(): for id, max_len in edges.iteritems():
Expand Down
4 changes: 2 additions & 2 deletions python/plugins/processing/algs/qgis/ConvexHull.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def processAlgorithm(self, progress):
if useField: if useField:
unique = layer.uniqueValues(index) unique = layer.uniqueValues(index)
current = 0 current = 0
total = 100.0 / (len(features) * len(unique)) total = 100.0 / (len(features) * len(unique)) if len(features) * len(unique) > 0 else 1
for i in unique: for i in unique:
first = True first = True
hull = [] hull = []
Expand Down Expand Up @@ -141,7 +141,7 @@ def processAlgorithm(self, progress):
fid += 1 fid += 1
else: else:
hull = [] hull = []
total = 100.0 / layer.featureCount() total = 100.0 / layer.featureCount() if layer.featureCount() > 0 else 1
features = vector.features(layer) features = vector.features(layer)
for current, f in enumerate(features): for current, f in enumerate(features):
inGeom = QgsGeometry(f.geometry()) inGeom = QgsGeometry(f.geometry())
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/Datasources2Vrt.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ def mergeDataSources2Vrt(self, dataSources, outFile, union=False, relative=False
if union: if union:
vrt += '<OGRVRTUnionLayer name="UnionedLayer">' vrt += '<OGRVRTUnionLayer name="UnionedLayer">'


total = 100.0 / len(dataSources) total = 100.0 / len(dataSources) if len(dataSources) > 0 else 1
for current, inFile in enumerate(dataSources): for current, inFile in enumerate(dataSources):
progress.setPercentage(int(current * total)) progress.setPercentage(int(current * total))


Expand Down
4 changes: 2 additions & 2 deletions python/plugins/processing/algs/qgis/Delaunay.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def processAlgorithm(self, progress):
ptNdx = -1 ptNdx = -1
c = voronoi.Context() c = voronoi.Context()
features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, inFeat in enumerate(features): for current, inFeat in enumerate(features):
geom = QgsGeometry(inFeat.geometry()) geom = QgsGeometry(inFeat.geometry())
point = geom.asPoint() point = geom.asPoint()
Expand All @@ -100,7 +100,7 @@ def processAlgorithm(self, progress):
triangles = c.triangles triangles = c.triangles
feat = QgsFeature() feat = QgsFeature()


total = 100.0 / len(triangles) total = 100.0 / len(triangles) if len(triangles) > 0 else 1
for current, triangle in enumerate(triangles): for current, triangle in enumerate(triangles):
indicies = list(triangle) indicies = list(triangle)
indicies.append(indicies[0]) indicies.append(indicies[0])
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/DeleteColumn.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def processAlgorithm(self, progress):
layer.wkbType(), layer.crs()) layer.wkbType(), layer.crs())


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1


feat = QgsFeature() feat = QgsFeature()
for current, f in enumerate(features): for current, f in enumerate(features):
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def processAlgorithm(self, progress):


features = vector.features(layer) features = vector.features(layer)


total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
geoms = dict() geoms = dict()
for current, f in enumerate(features): for current, f in enumerate(features):
geoms[f.id()] = QgsGeometry(f.geometry()) geoms[f.id()] = QgsGeometry(f.geometry())
Expand All @@ -71,7 +71,7 @@ def processAlgorithm(self, progress):
if g.isGeosEqual(cleaned[j]): if g.isGeosEqual(cleaned[j]):
del cleaned[j] del cleaned[j]


total = 100.0 / len(cleaned) total = 100.0 / len(cleaned) if len(cleaned) > 0 else 1
request = QgsFeatureRequest().setFilterFids(cleaned.keys()) request = QgsFeatureRequest().setFilterFids(cleaned.keys())
for current, f in enumerate(layer.getFeatures(request)): for current, f in enumerate(layer.getFeatures(request)):
writer.addFeature(f) writer.addFeature(f)
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/DeleteHoles.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def processAlgorithm(self, progress):
layer.crs()) layer.crs())


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1


feat = QgsFeature() feat = QgsFeature()
for current, f in enumerate(features): for current, f in enumerate(features):
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/DensifyGeometries.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def processAlgorithm(self, progress):
layer.wkbType(), layer.crs()) layer.wkbType(), layer.crs())


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, f in enumerate(features): for current, f in enumerate(features):
featGeometry = QgsGeometry(f.geometry()) featGeometry = QgsGeometry(f.geometry())
attrs = f.attributes() attrs = f.attributes()
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def processAlgorithm(self, progress):
layer.wkbType(), layer.crs()) layer.wkbType(), layer.crs())


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, f in enumerate(features): for current, f in enumerate(features):
featGeometry = QgsGeometry(f.geometry()) featGeometry = QgsGeometry(f.geometry())
attrs = f.attributes() attrs = f.attributes()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/Difference.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def processAlgorithm(self, progress):
outFeat = QgsFeature() outFeat = QgsFeature()
index = vector.spatialindex(layerB) index = vector.spatialindex(layerB)
selectionA = vector.features(layerA) selectionA = vector.features(layerA)
total = 100.0 / len(selectionA) total = 100.0 / len(selectionA) if len(selectionA) > 0 else 1
for current, inFeatA in enumerate(selectionA): for current, inFeatA in enumerate(selectionA):
add = True add = True
geom = QgsGeometry(inFeatA.geometry()) geom = QgsGeometry(inFeatA.geometry())
Expand Down
4 changes: 2 additions & 2 deletions python/plugins/processing/algs/qgis/Dissolve.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def processAlgorithm(self, progress):
vlayerA.crs()) vlayerA.crs())
outFeat = QgsFeature() outFeat = QgsFeature()
features = vector.features(vlayerA) features = vector.features(vlayerA)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1


if not useField: if not useField:
first = True first = True
Expand Down Expand Up @@ -154,7 +154,7 @@ def processAlgorithm(self, progress):


geometry_dict[index_attrs].append(tmpInGeom) geometry_dict[index_attrs].append(tmpInGeom)


nFeat = len(attribute_dict) nFeat = len(attribute_dict) if len(attribute_dict) > 0 else 1


nElement = 0 nElement = 0
for key, value in geometry_dict.items(): for key, value in geometry_dict.items():
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/EquivalentNumField.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def processAlgorithm(self, progress):
classes = {} classes = {}


features = vector.features(vlayer) features = vector.features(vlayer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, feature in enumerate(features): for current, feature in enumerate(features):
progress.setPercentage(int(current * total)) progress.setPercentage(int(current * total))
inGeom = feature.geometry() inGeom = feature.geometry()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/ExecuteSQL.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def processAlgorithm(self, progress):
vLayer.crs()) vLayer.crs())


features = vector.features(vLayer) features = vector.features(vLayer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
outFeat = QgsFeature() outFeat = QgsFeature()
for current, inFeat in enumerate(features): for current, inFeat in enumerate(features):
outFeat.setAttributes(inFeat.attributes()) outFeat.setAttributes(inFeat.attributes())
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/Explode.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def processAlgorithm(self, progress):
vlayer.crs()) vlayer.crs())
outFeat = QgsFeature() outFeat = QgsFeature()
features = vector.features(vlayer) features = vector.features(vlayer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, feature in enumerate(features): for current, feature in enumerate(features):
progress.setPercentage(int(current * total)) progress.setPercentage(int(current * total))
inGeom = feature.geometry() inGeom = feature.geometry()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/ExportGeometryInfo.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ def processAlgorithm(self, progress):
outFeat.setFields(fields) outFeat.setFields(fields)


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, f in enumerate(features): for current, f in enumerate(features):
inGeom = f.geometry() inGeom = f.geometry()


Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/ExtentFromLayer.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def layerExtent(self, layer, writer, progress):


def featureExtent(self, layer, writer, progress): def featureExtent(self, layer, writer, progress):
features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
feat = QgsFeature() feat = QgsFeature()
for current, f in enumerate(features): for current, f in enumerate(features):
rect = f.geometry().boundingBox() rect = f.geometry().boundingBox()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/ExtractByLocation.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def processAlgorithm(self, progress):


selectedSet = [] selectedSet = []
features = vector.features(selectLayer) features = vector.features(selectLayer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, f in enumerate(features): for current, f in enumerate(features):
geom = vector.snapToPrecision(f.geometry(), precision) geom = vector.snapToPrecision(f.geometry(), precision)
bbox = vector.bufferedBoundingBox(geom.boundingBox(), 0.51 * precision) bbox = vector.bufferedBoundingBox(geom.boundingBox(), 0.51 * precision)
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/ExtractNodes.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def processAlgorithm(self, progress):
outGeom = QgsGeometry() outGeom = QgsGeometry()


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, f in enumerate(features): for current, f in enumerate(features):
inGeom = f.geometry() inGeom = f.geometry()
attrs = f.attributes() attrs = f.attributes()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/FieldPyculator.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def processAlgorithm(self, progress):


# Run # Run
features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, feat in enumerate(features): for current, feat in enumerate(features):
progress.setPercentage(int(current * total)) progress.setPercentage(int(current * total))
attrs = feat.attributes() attrs = feat.attributes()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/FieldsCalculator.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def processAlgorithm(self, progress):
calculationSuccess = True calculationSuccess = True


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1


rownum = 1 rownum = 1
for current, f in enumerate(features): for current, f in enumerate(features):
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/FieldsMapper.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ def processAlgorithm(self, progress):
outFeat = QgsFeature() outFeat = QgsFeature()
features = vector.features(layer) features = vector.features(layer)
if len(features): if len(features):
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, inFeat in enumerate(features): for current, inFeat in enumerate(features):
rownum = current + 1 rownum = current + 1


Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/GeometryConvert.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def processAlgorithm(self, progress):
layer.pendingFields(), newType, layer.crs()) layer.pendingFields(), newType, layer.crs())


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1


for current, f in enumerate(features): for current, f in enumerate(features):
geom = f.geometry() geom = f.geometry()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/Gridify.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def processAlgorithm(self, progress):
layer.pendingFields(), layer.wkbType(), layer.crs()) layer.pendingFields(), layer.wkbType(), layer.crs())


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1


for current, f in enumerate(features): for current, f in enumerate(features):
geom = f.geometry() geom = f.geometry()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/HubDistance.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ def processAlgorithm(self, progress):


# Scan source points, find nearest hub, and write to output file # Scan source points, find nearest hub, and write to output file
features = vector.features(layerPoints) features = vector.features(layerPoints)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, f in enumerate(features): for current, f in enumerate(features):
src = f.geometry().boundingBox().center() src = f.geometry().boundingBox().center()


Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/HubLines.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def processAlgorithm(self, progress):


spokes = vector.features(layerSpoke) spokes = vector.features(layerSpoke)
hubs = vector.features(layerHub) hubs = vector.features(layerHub)
total = 100.0 / len(spokes) total = 100.0 / len(spokes) if len(spokes) > 0 else 1


for current, spokepoint in enumerate(spokes): for current, spokepoint in enumerate(spokes):
p = spokepoint.geometry().boundingBox().center() p = spokepoint.geometry().boundingBox().center()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/HypsometricCurves.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def processAlgorithm(self, progress):
memRasterDriver = gdal.GetDriverByName('MEM') memRasterDriver = gdal.GetDriverByName('MEM')


features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1


for current, f in enumerate(features): for current, f in enumerate(features):
geom = f.geometry() geom = f.geometry()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/algs/qgis/Intersection.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def processAlgorithm(self, progress):
outFeat = QgsFeature() outFeat = QgsFeature()
index = vector.spatialindex(vlayerB) index = vector.spatialindex(vlayerB)
selectionA = vector.features(vlayerA) selectionA = vector.features(vlayerA)
total = 100.0 / len(selectionA) total = 100.0 / len(selectionA) if len(selectionA) > 0 else 1
for current, inFeatA in enumerate(selectionA): for current, inFeatA in enumerate(selectionA):
progress.setPercentage(int(current * total)) progress.setPercentage(int(current * total))
geom = inFeatA.geometry() geom = inFeatA.geometry()
Expand Down
4 changes: 2 additions & 2 deletions python/plugins/processing/algs/qgis/JoinAttributes.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ def processAlgorithm(self, progress):
# Cache attributes of Layer 2 # Cache attributes of Layer 2
cache = {} cache = {}
features = vector.features(layer2) features = vector.features(layer2)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, feat in enumerate(features): for current, feat in enumerate(features):
attrs = feat.attributes() attrs = feat.attributes()
joinValue2 = unicode(attrs[joinField2Index]) joinValue2 = unicode(attrs[joinField2Index])
Expand All @@ -92,7 +92,7 @@ def processAlgorithm(self, progress):
# Create output vector layer with additional attribute # Create output vector layer with additional attribute
outFeat = QgsFeature() outFeat = QgsFeature()
features = vector.features(layer) features = vector.features(layer)
total = 100.0 / len(features) total = 100.0 / len(features) if len(features) > 0 else 1
for current, feat in enumerate(features): for current, feat in enumerate(features):
outFeat.setGeometry(feat.geometry()) outFeat.setGeometry(feat.geometry())
attrs = feat.attributes() attrs = feat.attributes()
Expand Down
Loading

0 comments on commit 70cd0e4

Please sign in to comment.