[Processing] Make DeleteHoles algorithm NULL geometry aware

This commit is contained in:
Matthias Kuhn 2016-02-03 15:04:30 +01:00
parent cd10c6c88e
commit 1205082269

View File

@ -60,18 +60,21 @@ class DeleteHoles(GeoAlgorithm):
for count, f in enumerate(features): for count, f in enumerate(features):
geometry = f.geometry() geometry = f.geometry()
if geometry.isMultipart(): if geometry:
multi_polygon = geometry.asMultiPolygon() if geometry.isMultipart():
for polygon in multi_polygon: multi_polygon = geometry.asMultiPolygon()
for polygon in multi_polygon:
for ring in polygon[1:]:
polygon.remove(ring)
geometry = QgsGeometry.fromMultiPolygon(multi_polygon)
else:
polygon = geometry.asPolygon()
for ring in polygon[1:]: for ring in polygon[1:]:
polygon.remove(ring) polygon.remove(ring)
geometry = QgsGeometry.fromMultiPolygon(multi_polygon) geometry = QgsGeometry.fromPolygon(polygon)
else: else:
polygon = geometry.asPolygon() geometry = QgsGeometry(None)
for ring in polygon[1:]:
polygon.remove(ring)
geometry = QgsGeometry.fromPolygon(polygon)
feat.setGeometry(geometry) feat.setGeometry(geometry)
feat.setAttributes(f.attributes()) feat.setAttributes(f.attributes())