@@ -207,14 +207,17 @@ def runFinishedFromThread( self, results ):
207
207
self .tr ( "No output created. File creation error:\n %1" )
208
208
.arg ( results [3 ] ) )
209
209
return
210
- if not results [2 ] or not results [1 ] or not results [0 ]:
210
+ if ( not results [2 ] is None and not results [ 2 ]) or not results [1 ] or not results [0 ]:
211
211
out_text = self .tr ( "\n Warnings:" )
212
212
end_text = self .tr ( "\n Some output geometries may be missing or invalid.\n \n Would you like to add the new layer anyway?" )
213
213
else :
214
214
out_text = "\n "
215
215
end_text = self .tr ( "\n \n Would you like to add the new layer to the TOC?" )
216
- if not results [2 ]:
217
- out_text = out_text + self .tr ( "\n Input CRS error: Different input coordinate reference systems detected, results may not be as expected." )
216
+ if not results [2 ] is None :
217
+ if not results [2 ]:
218
+ out_text = out_text + self .tr ( "\n Input CRS error: Different input coordinate reference systems detected, results may not be as expected." )
219
+ else :
220
+ out_text = out_text + self .tr ( "\n Input CRS error: One or more input layers missing coordinate reference information, results may not be as expected." )
218
221
if not results [1 ]:
219
222
out_text = out_text + self .tr ( "\n Feature geometry error: One or more output features ignored due to invalid geometry." )
220
223
if not results [0 ]:
@@ -693,8 +696,13 @@ def difference( self ):
693
696
allAttrsB = vproviderB .attributeIndexes ()
694
697
vproviderB .select ( allAttrsB )
695
698
fields = vproviderA .fields ()
696
- if vproviderA .crs () == vproviderB .crs (): crs_match = True
697
- else : crs_match = False
699
+ # check for crs compatability
700
+ crsA = vproviderA .crs ()
701
+ crsB = vproviderB .crs ()
702
+ if not crsA .isValid () or not crsB .isValid ():
703
+ crs_match = None
704
+ else :
705
+ crs_match = crsA == crsB
698
706
writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
699
707
fields , vproviderA .geometryType (), vproviderA .crs () )
700
708
inFeatA = QgsFeature ()
@@ -844,7 +852,13 @@ def intersect( self ):
844
852
vproviderB = self .vlayerB .dataProvider ()
845
853
allAttrsB = vproviderB .attributeIndexes ()
846
854
vproviderB .select ( allAttrsB )
847
- crs_match = vproviderA .crs () == vproviderB .crs ()
855
+ # check for crs compatability
856
+ crsA = vproviderA .crs ()
857
+ crsB = vproviderB .crs ()
858
+ if not crsA .isValid () or not crsB .isValid ():
859
+ crs_match = None
860
+ else :
861
+ crs_match = crsA == crsB
848
862
fields = ftools_utils .combineVectorFields ( self .vlayerA , self .vlayerB )
849
863
longNames = ftools_utils .checkFieldNameLength ( fields )
850
864
if not longNames .isEmpty ():
@@ -1006,8 +1020,13 @@ def union( self ):
1006
1020
vproviderB = self .vlayerB .dataProvider ()
1007
1021
allAttrsB = vproviderB .attributeIndexes ()
1008
1022
vproviderB .select ( allAttrsB )
1009
- if vproviderA .crs () == vproviderB .crs (): crs_match = True
1010
- else : crs_match = False
1023
+ # check for crs compatability
1024
+ crsA = vproviderA .crs ()
1025
+ crsB = vproviderB .crs ()
1026
+ if not crsA .isValid () or not crsB .isValid ():
1027
+ crs_match = None
1028
+ else :
1029
+ crs_match = crsA == crsB
1011
1030
fields = ftools_utils .combineVectorFields ( self .vlayerA , self .vlayerB )
1012
1031
longNames = ftools_utils .checkFieldNameLength ( fields )
1013
1032
if not longNames .isEmpty ():
@@ -1135,8 +1154,13 @@ def symetrical_difference( self ):
1135
1154
vproviderB = self .vlayerB .dataProvider ()
1136
1155
allAttrsB = vproviderB .attributeIndexes ()
1137
1156
vproviderB .select ( allAttrsB )
1138
- if vproviderA .crs () == vproviderB .crs (): crs_match = True
1139
- else : crs_match = False
1157
+ # check for crs compatability
1158
+ crsA = vproviderA .crs ()
1159
+ crsB = vproviderB .crs ()
1160
+ if not crsA .isValid () or not crsB .isValid ():
1161
+ crs_match = None
1162
+ else :
1163
+ crs_match = crsA == crsB
1140
1164
fields = ftools_utils .combineVectorFields ( self .vlayerA , self .vlayerB )
1141
1165
longNames = ftools_utils .checkFieldNameLength ( fields )
1142
1166
if not longNames .isEmpty ():
@@ -1223,8 +1247,13 @@ def clip( self ):
1223
1247
vproviderB = self .vlayerB .dataProvider ()
1224
1248
allAttrsB = vproviderB .attributeIndexes ()
1225
1249
vproviderB .select ( allAttrsB )
1226
- if vproviderA .crs () == vproviderB .crs (): crs_match = True
1227
- else : crs_match = False
1250
+ # check for crs compatability
1251
+ crsA = vproviderA .crs ()
1252
+ crsB = vproviderB .crs ()
1253
+ if not crsA .isValid () or not crsB .isValid ():
1254
+ crs_match = None
1255
+ else :
1256
+ crs_match = crsA == crsB
1228
1257
fields = vproviderA .fields ()
1229
1258
writer = QgsVectorFileWriter ( self .myName , self .myEncoding ,
1230
1259
fields , vproviderA .geometryType (), vproviderA .crs () )
0 commit comments