From cf51e4ce2c292f35177c7db9fcc1a51d5f82f803 Mon Sep 17 00:00:00 2001 From: Kamil Sopko Date: Sat, 20 Feb 2016 10:56:32 +0100 Subject: [PATCH] implement del_polygon from geometry --- camlib.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/camlib.py b/camlib.py index 7d756a12..b919f398 100644 --- a/camlib.py +++ b/camlib.py @@ -136,6 +136,29 @@ class Geometry(object): log.error("Failed to run union on polygons.") raise + def del_polygon(self, points): + """ + Delete a polygon from the object + + :param points: The vertices of the polygon. + :return: None + """ + if self.solid_geometry is None: + self.solid_geometry = [] + + + flat_geometry = self.flatten(pathonly=True) + log.debug("%d paths" % len(flat_geometry)) + polygon=Polygon(points) + toolgeo=cascaded_union(polygon) + diffs=[] + for target in flat_geometry: + if type(target) == LineString or type(target) == LinearRing: + diffs.append(target.difference(toolgeo)) + else: + log.warning("Not implemented.") + return cascaded_union(diffs) + def bounds(self): """ Returns coordinates of rectangular bounds