def processPolygon(self): if self.skipPoly: return interior_ring = [] poly = QgsPolygon() outerLineStr = coord2ptsZ(self.outerPoly) poly.setExteriorRing(outerLineStr) if len(self.innerPoly) > 0: for p in self.innerPoly: innerLineStr = coord2ptsZ(p) interior_ring.append(innerLineStr) poly.setInteriorRings(interior_ring) self.polygons.append(poly)
def tzf_to_qgis_polygon(tzdata): if not tzdata or len(tzdata) < 1: return None multi_poly = QgsMultiPolygon() for tzpoly in tzdata: holes = [] poly = QgsPolygon() for x, part in enumerate(tzpoly): if x == 0: outer_ls = QgsLineString(part[0], part[1]) poly.setExteriorRing(outer_ls) else: hole_ls = QgsLineString(part[0], part[1]) holes.append(hole_ls) poly.setInteriorRings(holes) multi_poly.addGeometry(poly) return (QgsGeometry(multi_poly))