Skip to content

Commit e7fe61e

Browse files
committed
[processing] load algorithms only when requred 3rd party modules are
available or compatible QGIS version is used Some housekeeping in QGIS algorithms provider
1 parent b4b382b commit e7fe61e

File tree

84 files changed

+515
-669
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+515
-669
lines changed

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

+6-9
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,13 @@ def processAlgorithm(self, progress):
8585
writer = output.getVectorWriter(fields, provider.geometryType(),
8686
layer.crs())
8787
outFeat = QgsFeature()
88-
inGeom = QgsGeometry()
89-
nElement = 0
9088
features = vector.features(layer)
91-
nFeat = len(features)
92-
for inFeat in features:
93-
progress.setPercentage(int(100 * nElement / nFeat))
94-
nElement += 1
95-
inGeom = inFeat.geometry()
96-
outFeat.setGeometry(inGeom)
97-
atMap = inFeat.attributes()
89+
total = 100.0 / len(features)
90+
for current, feat in enumerate(features):
91+
progress.setPercentage(int(current * total))
92+
geom = feat.geometry()
93+
outFeat.setGeometry(geom)
94+
atMap = feat.attributes()
9895
atMap.append(None)
9996
outFeat.setAttributes(atMap)
10097
writer.addFeature(outFeat)

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

+14-18
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ class AutoincrementalField(GeoAlgorithm):
3838
INPUT = 'INPUT'
3939
OUTPUT = 'OUTPUT'
4040

41+
def defineCharacteristics(self):
42+
self.name, self.i18n_name = self.trAlgorithm('Add autoincremental field')
43+
self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
44+
self.addParameter(ParameterVector(self.INPUT,
45+
self.tr('Input layer'), [ParameterVector.VECTOR_TYPE_ANY]))
46+
self.addOutput(OutputVector(self.OUTPUT, self.tr('Incremented')))
47+
4148
def processAlgorithm(self, progress):
4249
output = self.getOutputFromName(self.OUTPUT)
4350
vlayer = \
@@ -47,26 +54,15 @@ def processAlgorithm(self, progress):
4754
fields.append(QgsField('AUTO', QVariant.Int))
4855
writer = output.getVectorWriter(fields, vprovider.geometryType(),
4956
vlayer.crs())
50-
inFeat = QgsFeature()
5157
outFeat = QgsFeature()
52-
inGeom = QgsGeometry()
53-
nElement = 0
5458
features = vector.features(vlayer)
55-
nFeat = len(features)
56-
for inFeat in features:
57-
progress.setPercentage(int(100 * nElement / nFeat))
58-
nElement += 1
59-
inGeom = inFeat.geometry()
60-
outFeat.setGeometry(inGeom)
61-
attrs = inFeat.attributes()
62-
attrs.append(nElement)
59+
total = 100.0 / len(features)
60+
for current, feat in enumerate(features):
61+
progress.setPercentage(int(current * total))
62+
geom = feat.geometry()
63+
outFeat.setGeometry(geom)
64+
attrs = feat.attributes()
65+
attrs.append(count)
6366
outFeat.setAttributes(attrs)
6467
writer.addFeature(outFeat)
6568
del writer
66-
67-
def defineCharacteristics(self):
68-
self.name, self.i18n_name = self.trAlgorithm('Add autoincremental field')
69-
self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
70-
self.addParameter(ParameterVector(self.INPUT,
71-
self.tr('Input layer'), [ParameterVector.VECTOR_TYPE_ANY]))
72-
self.addOutput(OutputVector(self.OUTPUT, self.tr('Incremented')))

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

+1-3
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,10 @@ def processAlgorithm(self, progress):
116116
features = vector.features(layer)
117117
count = len(features)
118118
total = 100.0 / float(count)
119-
current = 0
120-
for ft in features:
119+
for current, ft in enumerate(features):
121120
if ft.attributes()[index]:
122121
values.append(float(ft.attributes()[index]))
123122

124-
current += 1
125123
progress.setPercentage(int(current * total))
126124

127125
stat = QgsStatisticalSummary()

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

+2-4
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,8 @@ def processAlgorithm(self, progress):
9292

9393
features = vector.features(layer)
9494
count = len(features)
95-
total = 100.0 / float(count)
96-
current = 0
97-
for ft in features:
95+
total = 100.0 / count
96+
for current, ft in enumerate(features):
9897
length = float(len(ft.attributes()[index]))
9998

10099
if isFirst:
@@ -115,7 +114,6 @@ def processAlgorithm(self, progress):
115114
values.append(length)
116115
sumValue += length
117116

118-
current += 1
119117
progress.setPercentage(int(current * total))
120118

121119
n = float(len(values))

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

+4-7
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,10 @@ def processAlgorithm(self, progress):
6060
outFeat = QgsFeature()
6161

6262
features = vector.features(layer)
63-
total = 100.0 / float(len(features))
64-
current = 0
65-
66-
for inFeat in features:
67-
inGeom = inFeat.geometry()
68-
attrs = inFeat.attributes()
63+
total = 100.0 / len(features)
64+
for current, feat in enumerate(features):
65+
inGeom = feat.geometry()
66+
attrs = feat.attributes()
6967

7068
if not inGeom:
7169
outGeom = QgsGeometry(None)
@@ -78,7 +76,6 @@ def processAlgorithm(self, progress):
7876
outFeat.setGeometry(outGeom)
7977
outFeat.setAttributes(attrs)
8078
writer.addFeature(outFeat)
81-
current += 1
8279
progress.setPercentage(int(current * total))
8380

8481
del writer

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def doCheck(self, progress):
125125
error_count = 0
126126

127127
features = vector.features(layer)
128-
count = len(features)
128+
total = 100.0 / len(features)
129129
for current, inFeat in enumerate(features):
130130
geom = QgsGeometry(inFeat.geometry())
131131
attrs = inFeat.attributes()
@@ -166,7 +166,7 @@ def doCheck(self, progress):
166166
invalid_writer.addFeature(outFeat)
167167
invalid_count += 1
168168

169-
progress.setPercentage(100 * current / float(count))
169+
progress.setPercentage(int(current * total))
170170

171171
del valid_writer
172172
del invalid_writer

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

+2-4
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,9 @@ def processAlgorithm(self, progress):
7878

7979
selectionA = vector.features(layerA)
8080

81-
current = 0
82-
total = 100.0 / float(len(selectionA))
81+
total = 100.0 / len(selectionA)
8382

84-
for inFeatA in selectionA:
83+
for current, inFeatA in enumerate(selectionA):
8584
geom = QgsGeometry(inFeatA.geometry())
8685
attrs = inFeatA.attributes()
8786
intersects = index.intersects(geom.boundingBox())
@@ -132,7 +131,6 @@ def processAlgorithm(self, progress):
132131
'invalid geometry.'))
133132
continue
134133

135-
current += 1
136134
progress.setPercentage(int(current * total))
137135

138136
del writer

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

+16-11
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,17 @@ def defineCharacteristics(self):
5959
self.addOutput(OutputVector(ConcaveHull.OUTPUT, self.tr('Concave hull')))
6060

6161
def processAlgorithm(self, progress):
62-
#get parameters
6362
layer = dataobjects.getObjectFromUri(self.getParameterValue(ConcaveHull.INPUT))
6463
alpha = self.getParameterValue(self.ALPHA)
6564
holes = self.getParameterValue(self.HOLES)
6665
no_multigeom = self.getParameterValue(self.NO_MULTIGEOMETRY)
67-
#Delaunay triangulation from input point layer
66+
67+
# Delaunay triangulation from input point layer
6868
progress.setText(self.tr('Creating Delaunay triangles...'))
6969
delone_triangles = processing.runalg("qgis:delaunaytriangulation", layer, None, progress=None)['OUTPUT']
7070
delaunay_layer = processing.getObject(delone_triangles)
71-
#get max edge length from Delaunay triangles
71+
72+
# Get max edge length from Delaunay triangles
7273
progress.setText(self.tr('Computing edges max length...'))
7374
features = delaunay_layer.getFeatures()
7475
counter = 50. / delaunay_layer.featureCount()
@@ -81,7 +82,8 @@ def processAlgorithm(self, progress):
8182
edges[feat.id()] = max(lengths[-3:])
8283
progress.setPercentage(feat.id() * counter)
8384
max_length = max(lengths)
84-
#get features with longest edge longer than alpha*max_length
85+
86+
# Get features with longest edge longer than alpha*max_length
8587
progress.setText(self.tr('Removing features...'))
8688
counter = 50. / len(edges)
8789
i = 0
@@ -91,40 +93,43 @@ def processAlgorithm(self, progress):
9193
ids.append(id)
9294
progress.setPercentage(50 + i * counter)
9395
i += 1
94-
#remove features
96+
97+
# Remove features
9598
delaunay_layer.setSelectedFeatures(ids)
9699
delaunay_layer.startEditing()
97100
delaunay_layer.deleteSelectedFeatures()
98101
delaunay_layer.commitChanges()
99-
#dissolve all Delaunay triangles
102+
103+
# Dissolve all Delaunay triangles
100104
progress.setText(self.tr('Dissolving Delaunay triangles...'))
101105
dissolved = processing.runalg("qgis:dissolve", delaunay_layer,
102106
True, None, None, progress=None)['OUTPUT']
103107
dissolved_layer = processing.getObject(dissolved)
104-
#save result
108+
109+
# Save result
105110
progress.setText(self.tr('Saving data...'))
106111
feat = QgsFeature()
107112
dissolved_layer.getFeatures(QgsFeatureRequest().setFilterFid(0)).nextFeature(feat)
108113
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
109114
layer.pendingFields().toList(), QGis.WKBPolygon, layer.crs())
110115
geom = feat.geometry()
111116
if no_multigeom and geom.isMultipart():
112-
#only singlepart geometries are allowed
117+
# Only singlepart geometries are allowed
113118
geom_list = geom.asMultiPolygon()
114119
for single_geom_list in geom_list:
115120
single_feature = QgsFeature()
116121
single_geom = QgsGeometry.fromPolygon(single_geom_list)
117122
if not holes:
118-
#delete holes
123+
# Delete holes
119124
deleted = True
120125
while deleted:
121126
deleted = single_geom.deleteRing(1)
122127
single_feature.setGeometry(single_geom)
123128
writer.addFeature(single_feature)
124129
else:
125-
#multipart geometries are allowed
130+
# Multipart geometries are allowed
126131
if not holes:
127-
#delete holes
132+
# Delete holes
128133
deleted = True
129134
while deleted:
130135
deleted = geom.deleteRing(1)

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

+3-5
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,12 @@ def processAlgorithm(self, progress):
9494
inGeom = QgsGeometry()
9595
outGeom = QgsGeometry()
9696

97-
current = 0
98-
9997
fid = 0
10098
val = None
10199
features = vector.features(layer)
102100
if useField:
103101
unique = layer.uniqueValues(index)
102+
current = 0
104103
total = 100.0 / (len(features) * len(unique))
105104
for i in unique:
106105
first = True
@@ -133,13 +132,12 @@ def processAlgorithm(self, progress):
133132
fid += 1
134133
else:
135134
hull = []
136-
total = 100.0 / float(layer.featureCount())
135+
total = 100.0 / layer.featureCount()
137136
features = vector.features(layer)
138-
for f in features:
137+
for current, f in enumerate(features):
139138
inGeom = QgsGeometry(f.geometry())
140139
points = vector.extractPoints(inGeom)
141140
hull.extend(points)
142-
current += 1
143141
progress.setPercentage(int(current * total))
144142

145143
tmpGeom = QgsGeometry(outGeom.fromMultiPoint(hull))

0 commit comments

Comments
 (0)