@@ -1092,7 +1092,7 @@ def union( self ):
1092
1092
indexA = ftools_utils .createIndex ( vproviderB )
1093
1093
indexB = ftools_utils .createIndex ( vproviderA )
1094
1094
1095
- nFeat = vproviderA .featureCount () * vproviderB .featureCount ()
1095
+ nFeat = vproviderA .featureCount () + vproviderB .featureCount ()
1096
1096
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
1097
1097
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
1098
1098
@@ -1198,12 +1198,11 @@ def union( self ):
1198
1198
length = len ( vproviderA .fields () )
1199
1199
1200
1200
fitB = vproviderB .getFeatures ()
1201
- while fitB .nextFeature ( inFeatA ):
1201
+ while fitB .nextFeature ( inFeatB ):
1202
1202
add = False
1203
- geom = QgsGeometry ( inFeatA .geometry () )
1203
+ geom = QgsGeometry ( inFeatB .geometry () )
1204
1204
diff_geom = QgsGeometry ( geom )
1205
- atMap = inFeatA .attributes ()
1206
- atMap = dict ( zip ( range ( length , length + len ( atMap ) ), atMap ) )
1205
+ atMap = inFeatB .attributes ()
1207
1206
intersects = indexB .intersects ( geom .boundingBox () )
1208
1207
1209
1208
if len (intersects ) < 1 :
@@ -1215,8 +1214,8 @@ def union( self ):
1215
1214
FEATURE_EXCEPT = False
1216
1215
else :
1217
1216
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 () )
1220
1219
1221
1220
try :
1222
1221
if diff_geom .intersects ( tmpGeom ):
0 commit comments