Skip to content

Commit 72fe56c

Browse files
committedNov 30, 2014
[processing] fix Convex hull algorithm (fix #11725)
1 parent 7d8a3b1 commit 72fe56c

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed
 

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

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -50,24 +50,23 @@ class ConvexHull(GeoAlgorithm):
5050
def defineCharacteristics(self):
5151
self.name = 'Convex hull'
5252
self.group = 'Vector geometry tools'
53-
self.addParameter(ParameterVector(ConvexHull.INPUT, 'Input layer',
54-
[ParameterVector.VECTOR_TYPE_ANY]))
55-
self.addParameter(ParameterTableField(ConvexHull.FIELD,
56-
'Field (optional, only used if creating convex hulls by classes)',
57-
ConvexHull.INPUT, optional=True))
58-
self.addParameter(ParameterSelection(ConvexHull.METHOD, 'Method',
59-
ConvexHull.METHODS))
60-
self.addOutput(OutputVector(ConvexHull.OUTPUT, 'Convex hull'))
53+
self.addParameter(ParameterVector(
54+
self.INPUT, 'Input layer', [ParameterVector.VECTOR_TYPE_ANY]))
55+
self.addParameter(ParameterTableField(
56+
self.FIELD,
57+
'Field (optional, only used if creating convex hulls by classes)',
58+
self.INPUT, optional=True))
59+
self.addParameter(ParameterSelection(
60+
self.METHOD, 'Method', self.METHODS))
61+
self.addOutput(OutputVector(self.OUTPUT, 'Convex hull'))
6162

6263
def processAlgorithm(self, progress):
63-
useField = self.getParameterValue(ConvexHull.METHOD) == 1
64-
fieldName = self.getParameterValue(ConvexHull.FIELD)
6564
layer = dataobjects.getObjectFromUri(
66-
self.getParameterValue(ConvexHull.INPUT))
65+
self.getParameterValue(self.INPUT))
66+
useField = self.getParameterValue(self.METHOD) == 1
67+
fieldName = self.getParameterValue(self.FIELD)
6768

6869
f = QgsField('value')
69-
f.setType(QVariant.String)
70-
f.setLength(255)
7170
if useField:
7271
index = layer.fieldNameIndex(fieldName)
7372
fType = layer.pendingFields()[index].type()
@@ -82,14 +81,14 @@ def processAlgorithm(self, progress):
8281
f.setType(QVariant.String)
8382
f.setLength(255)
8483

85-
fields = [QgsField('id', QVariant.Int, '', 20), f, QgsField('area',
86-
QVariant.Double, '', 20, 6), QgsField('perim',
87-
QVariant.Double, '', 20, 6)]
84+
fields = [QgsField('id', QVariant.Int, '', 20),
85+
f,
86+
QgsField('area', QVariant.Double, '', 20, 6),
87+
QgsField('perim', QVariant.Double, '', 20, 6)
88+
]
8889

89-
writer = self.getOutputFromName(
90-
ConvexHull.OUTPUT).getVectorWriter(fields,
91-
QGis.WKBPolygon,
92-
layer.dataProvider().crs())
90+
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
91+
fields, QGis.WKBPolygon, layer.dataProvider().crs())
9392

9493
outFeat = QgsFeature()
9594
inGeom = QgsGeometry()
@@ -98,21 +97,22 @@ def processAlgorithm(self, progress):
9897
current = 0
9998

10099
fid = 0
101-
val = ''
100+
val = None
101+
features = vector.features(layer)
102102
if useField:
103103
unique = layer.uniqueValues(index)
104-
total = 100.0 / float(layer.featureCount() * len(unique))
105-
104+
total = 100.0 / (len(features) * len(unique))
106105
for i in unique:
107-
hull = []
108106
first = True
107+
hull = []
109108
features = vector.features(layer)
110109
for f in features:
111110
idVar = f[fieldName]
112-
if unicode(idVar).strip() == unicode(i).strip:
111+
if unicode(idVar).strip() == unicode(i).strip():
113112
if first:
114113
val = idVar
115114
first = False
115+
116116
inGeom = QgsGeometry(f.geometry())
117117
points = vector.extractPoints(inGeom)
118118
hull.extend(points)

0 commit comments

Comments
 (0)
Please sign in to comment.