@@ -55,23 +55,29 @@ def compute(self, inPoly, inPts, modify):
55
55
inputLayer = ftools_utils .getVectorLayerByName (inPoly )
56
56
selectLayer = ftools_utils .getVectorLayerByName (inPts )
57
57
inputProvider = inputLayer .dataProvider ()
58
+ allAttrs = inputProvider .attributeIndexes ()
59
+ inputProvider .select (allAttrs )
58
60
selectProvider = selectLayer .dataProvider ()
61
+ allAttrs = selectProvider .attributeIndexes ()
62
+ selectProvider .select (allAttrs )
59
63
feat = QgsFeature ()
64
+ infeat = QgsFeature ()
60
65
geom = QgsGeometry ()
61
66
selectedSet = []
62
- selectProvider . nextFeature ( feat )
63
- geomLayer = QgsGeometry ( feat . geometry () )
64
-
65
- self .progressBar .setMaximum ( inputProvider . featureCount () + selectProvider .featureCount () )
66
-
67
+ index = ftools_utils . createIndex ( inputProvider )
68
+ #selectProvider.nextFeature(feat )
69
+ #geomLayer = QgsGeometry(feat.geometry())
70
+ self .progressBar .setMaximum (selectProvider .featureCount ())
71
+
67
72
while selectProvider .nextFeature (feat ):
68
- geomLayer = geomLayer .combine (QgsGeometry (feat .geometry ()))
69
- self .progressBar .setValue ( self .progressBar .value () + 1 )
70
- while inputProvider .nextFeature (feat ):
71
73
geom = QgsGeometry (feat .geometry ())
72
- if geom .intersects (geomLayer ):
73
- selectedSet .append (feat .id ())
74
- self .progressBar .setValue ( self .progressBar .value () + 1 )
74
+ intersects = index .intersects (geom .boundingBox ())
75
+ for id in intersects :
76
+ inputProvider .featureAtId (int (id ), infeat , True )
77
+ tmpGeom = QgsGeometry ( infeat .geometry () )
78
+ if geom .intersects (tmpGeom ):
79
+ selectedSet .append (infeat .id ())
80
+ self .progressBar .setValue (self .progressBar .value ()+ 1 )
75
81
if modify == self .tr ("adding to current selection" ):
76
82
selectedSet = list (set (inputLayer .selectedFeaturesIds ()).union (selectedSet ))
77
83
elif modify == self .tr ("removing from current selection" ):
0 commit comments