@@ -163,15 +163,13 @@ def eliminate(self, inLayer, boundary, progressBar, outFileName):
163
163
if inLayer .getFeatures ( QgsFeatureRequest ().setFilterFid ( fid2Eliminate ).setSubsetOfAttributes ([]) ).nextFeature ( feat ):
164
164
geom2Eliminate = feat .geometry ()
165
165
bbox = geom2Eliminate .boundingBox ()
166
- outLayer .select ( bbox , False ) # make a new selection
166
+ fit = outLayer .getFeatures ( QgsFeatureRequest (). setFilterRect ( bbox ) )
167
167
mergeWithFid = None
168
168
mergeWithGeom = None
169
169
max = 0
170
-
171
- for selFid in outLayer .selectedFeaturesIds ():
172
- selFeat = QgsFeature ()
173
-
174
- if outLayer .getFeatures ( QgsFeatureRequest ().setFilterFid ( selFid ).setSubsetOfAttributes ([]) ).nextFeature ( selFeat ):
170
+
171
+ selFeat = QgsFeature ()
172
+ while fit .nextFeature (selFeat ):
175
173
selGeom = selFeat .geometry ()
176
174
177
175
if geom2Eliminate .intersects (selGeom ): # we have a candidate
@@ -188,7 +186,7 @@ def eliminate(self, inLayer, boundary, progressBar, outFileName):
188
186
189
187
if selValue > max :
190
188
max = selValue
191
- mergeWithFid = selFid
189
+ mergeWithFid = selFeat . id ()
192
190
mergeWithGeom = QgsGeometry (selGeom ) # deep copy of the geometry
193
191
194
192
if mergeWithFid != None : # a successful candidate
@@ -213,8 +211,7 @@ def eliminate(self, inLayer, boundary, progressBar, outFileName):
213
211
# end for fid2Eliminate
214
212
215
213
# deselect features that are already eliminated in inLayer
216
- for aFid in fidsToDeselect :
217
- inLayer .deselect (aFid , False )
214
+ inLayer .deselect (fidsToDeselect )
218
215
219
216
#end while
220
217
0 commit comments