@@ -1092,7 +1092,7 @@ def union( self ):
10921092 indexA = ftools_utils .createIndex ( vproviderB )
10931093 indexB = ftools_utils .createIndex ( vproviderA )
10941094
1095- nFeat = vproviderA .featureCount () * vproviderB .featureCount ()
1095+ nFeat = vproviderA .featureCount () + vproviderB .featureCount ()
10961096 self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
10971097 self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
10981098
@@ -1198,12 +1198,11 @@ def union( self ):
11981198 length = len ( vproviderA .fields () )
11991199
12001200 fitB = vproviderB .getFeatures ()
1201- while fitB .nextFeature ( inFeatA ):
1201+ while fitB .nextFeature ( inFeatB ):
12021202 add = False
1203- geom = QgsGeometry ( inFeatA .geometry () )
1203+ geom = QgsGeometry ( inFeatB .geometry () )
12041204 diff_geom = QgsGeometry ( geom )
1205- atMap = inFeatA .attributes ()
1206- atMap = dict ( zip ( range ( length , length + len ( atMap ) ), atMap ) )
1205+ atMap = inFeatB .attributes ()
12071206 intersects = indexB .intersects ( geom .boundingBox () )
12081207
12091208 if len (intersects ) < 1 :
@@ -1215,8 +1214,8 @@ def union( self ):
12151214 FEATURE_EXCEPT = False
12161215 else :
12171216 for id in intersects :
1218- vproviderB .getFeatures ( QgsFeatureRequest ().setFilterFid ( int ( id ) ) ).nextFeature ( inFeatB )
1219- tmpGeom = QgsGeometry ( inFeatB .geometry () )
1217+ vproviderA .getFeatures ( QgsFeatureRequest ().setFilterFid ( int ( id ) ) ).nextFeature ( inFeatA )
1218+ tmpGeom = QgsGeometry ( inFeatA .geometry () )
12201219
12211220 try :
12221221 if diff_geom .intersects ( tmpGeom ):
0 commit comments