@@ -326,16 +326,19 @@ def buffering( self, useField ):
326
326
allAttrs = vproviderA .attributeIndexes ()
327
327
vproviderA .select ( allAttrs )
328
328
fields = vproviderA .fields ()
329
- writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
330
- fields , QGis .WKBPolygon , vproviderA .crs () )
329
+
330
+ writer = QgsVectorFileWriter ( self .myName , self .myEncoding , fields ,
331
+ QGis .WKBPolygon , vproviderA .crs () )
331
332
# check if writer was created properly, if not, return with error
332
333
if writer .hasError ():
333
334
return GEOS_EXCEPT , FEATURE_EXCEPT , True , writer .errorMessage ()
335
+
334
336
outFeat = QgsFeature ()
335
337
inFeat = QgsFeature ()
336
338
inGeom = QgsGeometry ()
337
339
outGeom = QgsGeometry ()
338
340
nElement = 0
341
+
339
342
# there is selection in input layer
340
343
if self .mySelectionA :
341
344
nFeat = self .vlayerA .selectedFeatureCount ()
@@ -434,7 +437,6 @@ def buffering( self, useField ):
434
437
FEATURE_EXCEPT = False
435
438
# without dissolve
436
439
else :
437
- vproviderA .rewind ()
438
440
while vproviderA .nextFeature ( inFeat ):
439
441
atMap = inFeat .attributeMap ()
440
442
if useField :
@@ -466,10 +468,11 @@ def convex_hull(self, useField ):
466
468
allAttrsA = vproviderA .attributeIndexes ()
467
469
vproviderA .select (allAttrsA )
468
470
fields = vproviderA .fields ()
469
- writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
470
- fields , QGis .WKBPolygon , vproviderA .crs () )
471
+ writer = QgsVectorFileWriter ( self .myName , self .myEncoding , fields ,
472
+ QGis .WKBPolygon , vproviderA .crs () )
471
473
if writer .hasError ():
472
474
return GEOS_EXCEPT , FEATURE_EXCEPT , True , writer .errorMessage ()
475
+
473
476
inFeat = QgsFeature ()
474
477
outFeat = QgsFeature ()
475
478
inGeom = QgsGeometry ()
@@ -533,7 +536,6 @@ def convex_hull(self, useField ):
533
536
GEOS_EXCEPT = False
534
537
# there is no selection in input layer
535
538
else :
536
- rect = self .vlayerA .extent ()
537
539
nFeat = vproviderA .featureCount ()
538
540
if useField :
539
541
unique = ftools_utils .getUniqueValues ( vproviderA , self .myParam )
@@ -544,8 +546,6 @@ def convex_hull(self, useField ):
544
546
hull = []
545
547
first = True
546
548
outID = 0
547
- vproviderA .select ( allAttrsA )#, rect )
548
- #vproviderA.rewind()
549
549
while vproviderA .nextFeature ( inFeat ):
550
550
atMap = inFeat .attributeMap ()
551
551
idVar = atMap [ self .myParam ]
@@ -575,8 +575,6 @@ def convex_hull(self, useField ):
575
575
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
576
576
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
577
577
hull = []
578
- #vproviderA.rewind()
579
- vproviderA .select (allAttrsA )
580
578
while vproviderA .nextFeature ( inFeat ):
581
579
inGeom = QgsGeometry ( inFeat .geometry () )
582
580
points = ftools_utils .extractPoints ( inGeom )
@@ -599,14 +597,20 @@ def dissolve( self, useField ):
599
597
vproviderA = self .vlayerA .dataProvider ()
600
598
allAttrsA = vproviderA .attributeIndexes ()
601
599
fields = vproviderA .fields ()
602
- writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
603
- fields , vproviderA .geometryType (), vproviderA .crs () )
600
+
601
+ writer = QgsVectorFileWriter ( self .myName , self .myEncoding , fields ,
602
+ vproviderA .geometryType (), vproviderA .crs () )
604
603
if writer .hasError ():
605
604
return GEOS_EXCEPT , FEATURE_EXCEPT , True , writer .errorMessage ()
605
+
606
606
inFeat = QgsFeature ()
607
607
outFeat = QgsFeature ()
608
- vproviderA .rewind ()
609
608
nElement = 0
609
+ attrs = None
610
+
611
+ vproviderA .rewind ()
612
+ vproviderA .select ( allAttrsA )
613
+
610
614
# there is selection in input layer
611
615
if self .mySelectionA :
612
616
nFeat = self .vlayerA .selectedFeatureCount ()
@@ -642,8 +646,8 @@ def dissolve( self, useField ):
642
646
for item in unique :
643
647
first = True
644
648
add = False
645
- vproviderA .select ( allAttrsA )
646
649
vproviderA .rewind ()
650
+ vproviderA .select ( allAttrsA )
647
651
for inFeat in selectionA :
648
652
nElement += 1
649
653
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nElement )
@@ -703,13 +707,14 @@ def dissolve( self, useField ):
703
707
for item in unique :
704
708
first = True
705
709
add = True
706
- vproviderA .select ( allAttrsA )
707
710
vproviderA .rewind ()
711
+ vproviderA .select ( allAttrsA )
708
712
while vproviderA .nextFeature ( inFeat ):
709
713
nElement += 1
710
714
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nElement )
711
715
atMap = inFeat .attributeMap ()
712
716
tempItem = atMap [ self .myParam ]
717
+
713
718
if tempItem .toString ().trimmed () == item .toString ().trimmed ():
714
719
if first :
715
720
QgsGeometry ( inFeat .geometry () )
@@ -742,22 +747,29 @@ def difference( self ):
742
747
allAttrsB = vproviderB .attributeIndexes ()
743
748
vproviderB .select ( allAttrsB )
744
749
fields = vproviderA .fields ()
750
+
745
751
# check for crs compatibility
746
752
crsA = vproviderA .crs ()
747
753
crsB = vproviderB .crs ()
748
754
if not crsA .isValid () or not crsB .isValid ():
749
755
crs_match = None
750
756
else :
751
757
crs_match = crsA == crsB
752
- writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
753
- fields , vproviderA .geometryType (), vproviderA .crs () )
758
+
759
+ writer = QgsVectorFileWriter ( self .myName , self .myEncoding , fields ,
760
+ vproviderA .geometryType (), vproviderA .crs () )
754
761
if writer .hasError ():
755
762
return GEOS_EXCEPT , FEATURE_EXCEPT , crs_match , writer .errorMessage ()
763
+
756
764
inFeatA = QgsFeature ()
757
765
inFeatB = QgsFeature ()
758
766
outFeat = QgsFeature ()
759
- index = ftools_utils .createIndex ( vproviderB )
760
767
nElement = 0
768
+
769
+ index = ftools_utils .createIndex ( vproviderB )
770
+ vproviderB .rewind ()
771
+ vproviderB .select ( allAttrsB )
772
+
761
773
# there is selection in input layer
762
774
if self .mySelectionA :
763
775
nFeat = self .vlayerA .selectedFeatureCount ()
@@ -829,6 +841,7 @@ def difference( self ):
829
841
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
830
842
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
831
843
vproviderA .rewind ()
844
+ vproviderA .select ( allAttrsA )
832
845
# we have selection in overlay layer
833
846
if self .mySelectionB :
834
847
selectionB = self .vlayerB .selectedFeaturesIds ()
@@ -900,27 +913,35 @@ def intersect( self ):
900
913
vproviderB = self .vlayerB .dataProvider ()
901
914
allAttrsB = vproviderB .attributeIndexes ()
902
915
vproviderB .select ( allAttrsB )
916
+
903
917
# check for crs compatibility
904
918
crsA = vproviderA .crs ()
905
919
crsB = vproviderB .crs ()
906
920
if not crsA .isValid () or not crsB .isValid ():
907
921
crs_match = None
908
922
else :
909
923
crs_match = crsA == crsB
924
+
910
925
fields = ftools_utils .combineVectorFields ( self .vlayerA , self .vlayerB )
911
926
longNames = ftools_utils .checkFieldNameLength ( fields )
912
927
if not longNames .isEmpty ():
913
928
message = QString ( 'Following field names are longer than 10 characters:\n %1' ).arg ( longNames .join ( '\n ' ) )
914
929
return GEOS_EXCEPT , FEATURE_EXCEPT , crs_match , message
915
- writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
916
- fields , vproviderA .geometryType (), vproviderA .crs () )
930
+
931
+ writer = QgsVectorFileWriter ( self .myName , self .myEncoding , fields ,
932
+ vproviderA .geometryType (), vproviderA .crs () )
917
933
if writer .hasError ():
918
934
return GEOS_EXCEPT , FEATURE_EXCEPT , crs_match , writer .errorMessage ()
935
+
919
936
inFeatA = QgsFeature ()
920
937
inFeatB = QgsFeature ()
921
938
outFeat = QgsFeature ()
922
- index = ftools_utils .createIndex ( vproviderB )
923
939
nElement = 0
940
+
941
+ index = ftools_utils .createIndex ( vproviderB )
942
+ vproviderB .rewind ()
943
+ vproviderB .select ( allAttrsB )
944
+
924
945
# there is selection in input layer
925
946
if self .mySelectionA :
926
947
nFeat = self .vlayerA .selectedFeatureCount ()
@@ -993,6 +1014,7 @@ def intersect( self ):
993
1014
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
994
1015
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
995
1016
vproviderA .rewind ()
1017
+ vproviderA .select ( allAttrsA )
996
1018
# we have selection in overlay layer
997
1019
if self .mySelectionB :
998
1020
selectionB = self .vlayerB .selectedFeaturesIds ()
@@ -1090,12 +1112,15 @@ def union( self ):
1090
1112
outFeat = QgsFeature ()
1091
1113
indexA = ftools_utils .createIndex ( vproviderB )
1092
1114
indexB = ftools_utils .createIndex ( vproviderA )
1115
+ vproviderA .rewind ()
1116
+ vproviderA .select ( allAttrsA )
1117
+ vproviderB .rewind ()
1118
+ vproviderB .select (allAttrsB )
1093
1119
1094
1120
nFeat = vproviderA .featureCount () * vproviderB .featureCount ()
1095
1121
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
1096
1122
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
1097
1123
1098
- vproviderA .rewind ()
1099
1124
count = 0
1100
1125
nElement = 0
1101
1126
@@ -1190,6 +1215,7 @@ def union( self ):
1190
1215
1191
1216
length = len ( vproviderA .fields ().values () )
1192
1217
vproviderB .rewind ()
1218
+ vproviderB .select (allAttrsB )
1193
1219
1194
1220
while vproviderB .nextFeature ( inFeatA ):
1195
1221
add = False
@@ -1247,32 +1273,41 @@ def symetrical_difference( self ):
1247
1273
vproviderB = self .vlayerB .dataProvider ()
1248
1274
allAttrsB = vproviderB .attributeIndexes ()
1249
1275
vproviderB .select ( allAttrsB )
1276
+
1250
1277
# check for crs compatibility
1251
1278
crsA = vproviderA .crs ()
1252
1279
crsB = vproviderB .crs ()
1253
1280
if not crsA .isValid () or not crsB .isValid ():
1254
1281
crs_match = None
1255
1282
else :
1256
1283
crs_match = crsA == crsB
1284
+
1257
1285
fields = ftools_utils .combineVectorFields ( self .vlayerA , self .vlayerB )
1258
1286
longNames = ftools_utils .checkFieldNameLength ( fields )
1259
1287
if not longNames .isEmpty ():
1260
1288
message = QString ( 'Following field names are longer than 10 characters:\n %1' ).arg ( longNames .join ( '\n ' ) )
1261
1289
return GEOS_EXCEPT , FEATURE_EXCEPT , crs_match , message
1262
- writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
1263
- fields , vproviderA .geometryType (), vproviderA .crs () )
1290
+
1291
+ writer = QgsVectorFileWriter ( self .myName , self .myEncoding , fields ,
1292
+ vproviderA .geometryType (), vproviderA .crs () )
1264
1293
if writer .hasError ():
1265
1294
return GEOS_EXCEPT , FEATURE_EXCEPT , crs_match , writer .errorMessage ()
1295
+
1266
1296
inFeatA = QgsFeature ()
1267
1297
inFeatB = QgsFeature ()
1268
1298
outFeat = QgsFeature ()
1299
+
1269
1300
indexA = ftools_utils .createIndex ( vproviderB )
1270
1301
indexB = ftools_utils .createIndex ( vproviderA )
1302
+ vproviderA .rewind ()
1303
+ vproviderA .select ( allAttrsA )
1304
+ vproviderB .rewind ()
1305
+ vproviderB .select (allAttrsB )
1306
+
1271
1307
nFeat = vproviderA .featureCount () * vproviderB .featureCount ()
1272
1308
nElement = 0
1273
1309
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
1274
1310
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
1275
- vproviderA .rewind ()
1276
1311
while vproviderA .nextFeature ( inFeatA ):
1277
1312
nElement += 1
1278
1313
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nElement )
@@ -1299,8 +1334,11 @@ def symetrical_difference( self ):
1299
1334
except :
1300
1335
FEATURE_EXCEPT = False
1301
1336
continue
1337
+
1302
1338
length = len ( vproviderA .fields ().values () )
1303
1339
vproviderB .rewind ()
1340
+ vproviderB .select (allAttrsB )
1341
+
1304
1342
while vproviderB .nextFeature ( inFeatA ):
1305
1343
nElement += 1
1306
1344
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nElement )
@@ -1340,24 +1378,32 @@ def clip( self ):
1340
1378
vproviderB = self .vlayerB .dataProvider ()
1341
1379
allAttrsB = vproviderB .attributeIndexes ()
1342
1380
vproviderB .select ( allAttrsB )
1381
+
1343
1382
# check for crs compatibility
1344
1383
crsA = vproviderA .crs ()
1345
1384
crsB = vproviderB .crs ()
1346
1385
if not crsA .isValid () or not crsB .isValid ():
1347
1386
crs_match = None
1348
1387
else :
1349
1388
crs_match = crsA == crsB
1389
+
1350
1390
fields = vproviderA .fields ()
1351
- writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
1352
- fields , vproviderA .geometryType (), vproviderA .crs () )
1391
+ writer = QgsVectorFileWriter ( self .myName , self .myEncoding , fields ,
1392
+ vproviderA .geometryType (), vproviderA .crs () )
1353
1393
if writer .hasError ():
1354
1394
return GEOS_EXCEPT , FEATURE_EXCEPT , crs_match , writer .errorMessage ()
1395
+
1355
1396
inFeatA = QgsFeature ()
1356
1397
inFeatB = QgsFeature ()
1357
1398
outFeat = QgsFeature ()
1399
+
1358
1400
index = ftools_utils .createIndex ( vproviderB )
1359
1401
vproviderA .rewind ()
1402
+ vproviderA .select ( allAttrsA )
1403
+ vproviderB .rewind ()
1404
+ vproviderB .select ( allAttrsB )
1360
1405
nElement = 0
1406
+
1361
1407
# there is selection in input layer
1362
1408
if self .mySelectionA :
1363
1409
nFeat = self .vlayerA .selectedFeatureCount ()
0 commit comments