@@ -75,7 +75,8 @@ def processAlgorithm(self, progress):
75
75
geomType = vlayerA .wkbType ()
76
76
fields = vector .combineVectorFields (vlayerA , vlayerB )
77
77
writer = self .getOutputFromName (Union .OUTPUT ).getVectorWriter (fields ,
78
- geomType , vlayerA .crs ())
78
+ geomType ,
79
+ vlayerA .crs ())
79
80
inFeatA = QgsFeature ()
80
81
inFeatB = QgsFeature ()
81
82
outFeat = QgsFeature ()
@@ -161,6 +162,10 @@ def processAlgorithm(self, progress):
161
162
if len (lstIntersectingB ) != 0 :
162
163
intB = QgsGeometry .unaryUnion (lstIntersectingB )
163
164
diff_geom = diff_geom .difference (intB )
165
+ if diff_geom is None :
166
+ ProcessingLog .addToLog (ProcessingLog .LOG_INFO ,
167
+ self .tr ('GEOS geoprocessing error: One or more input features have invalid geometry.' ))
168
+ diff_geom = QgsGeometry ()
164
169
if diff_geom .isGeosEmpty () or not diff_geom .isGeosValid ():
165
170
ProcessingLog .addToLog (ProcessingLog .LOG_ERROR ,
166
171
self .tr ('GEOS geoprocessing error: One or more input features have invalid geometry.' ))
@@ -207,6 +212,10 @@ def processAlgorithm(self, progress):
207
212
else :
208
213
intA = QgsGeometry .unaryUnion (lstIntersectingA )
209
214
res_geom = geom .difference (intA )
215
+ if res_geom is None :
216
+ ProcessingLog .addToLog (ProcessingLog .LOG_INFO ,
217
+ self .tr ('GEOS geoprocessing error: One or more input features have invalid geometry.' ))
218
+ res_geom = QgsGeometry ()
210
219
if res_geom .isGeosEmpty () or not res_geom .isGeosValid ():
211
220
ProcessingLog .addToLog (ProcessingLog .LOG_ERROR ,
212
221
self .tr ('GEOS geoprocessing error: One or more input features have invalid geometry.' ))
0 commit comments