def geos_multipolygon_from_polygons(ob): """ob must be either a sequence or array of sequences or arrays.""" obs = getattr(ob, 'geoms', None) or ob L = len(obs) assert L >= 1 exemplar = obs[0] try: N = len(exemplar[0][0]) except TypeError: N = exemplar._ndim assert N == 2 or N == 3 subs = (c_void_p * L)() for l in range(L): shell = getattr(obs[l], 'exterior', None) if shell is None: shell = obs[l][0] holes = getattr(obs[l], 'interiors', None) if holes is None: holes = obs[l][1] geom, ndims = geos_polygon_from_py(shell, holes) subs[l] = cast(geom, c_void_p) return (lgeos.GEOSGeom_createCollection(6, subs, L), N)
def geos_multipolygon_from_polygons(ob): """ ob must be either a MultiPolygon, sequence or array of sequences or arrays. """ if isinstance(ob, MultiPolygon): return geos_geom_from_py(ob) obs = getattr(ob, 'geoms', None) or ob L = len(obs) assert L >= 1 exemplar = obs[0] try: N = len(exemplar[0][0]) except TypeError: N = exemplar._ndim assert N == 2 or N == 3 subs = (c_void_p * L)() for l in range(L): shell = getattr(obs[l], 'exterior', None) if shell is None: shell = obs[l][0] holes = getattr(obs[l], 'interiors', None) if holes is None: holes = obs[l][1] geom, ndims = polygon.geos_polygon_from_py(shell, holes) subs[l] = cast(geom, c_void_p) return (lgeos.GEOSGeom_createCollection(6, subs, L), N)
def _update_shapely_polygon(self,shell=None,holes = None): # copying factory of how it is done in shapely 1.7.1 src code, # soon deprecated btw ret = geos_polygon_from_py(shell = shell, holes = holes) if ret is not None: self._geom, self._ndim = ret pass
def rotate(self, degrees): shell = rotate(self.boundary, degrees) ret = geos_polygon_from_py(shell, None) if ret is not None: self._geom, self._ndim = ret else: self.empty()
def geos_multipolygon_from_polygons(arg): """Creates a GEOS multipolygon from a sequence of polygon-like objects. Parameters ---------- arg : sequence or MultiPolygon Returns ------- int Pointer to a GEOS multipolygon. """ if isinstance(arg, MultiPolygon): return geos_geom_from_py(arg) obs = getattr(arg, 'geoms', arg) obs = [ ob for ob in obs if ob and not (isinstance(ob, polygon.Polygon) and ob.is_empty) ] L = len(obs) # Bail immediately if we have no input points. if L <= 0: return (lgeos.GEOSGeom_createEmptyCollection(6), 3) # This function does not accept sequences of MultiPolygons: there is # no implicit flattening. if isinstance(obs[0], MultiPolygon): raise ValueError("Sequences of multi-polygons are not valid arguments") exemplar = obs[0] try: N = len(exemplar[0][0]) except TypeError: N = exemplar._ndim assert N == 2 or N == 3 subs = (c_void_p * L)() for i, ob in enumerate(obs): if isinstance(ob, polygon.Polygon): shell = ob.exterior holes = ob.interiors else: shell = ob[0] holes = ob[1] geom, ndims = polygon.geos_polygon_from_py(shell, holes) subs[i] = cast(geom, c_void_p) return (lgeos.GEOSGeom_createCollection(6, subs, L), N)
def geos_multipolygon_from_polygons(arg): """Creates a GEOS multipolygon from a sequence of polygon-like objects. Parameters ---------- arg : sequence or MultiPolygon Returns ------- int Pointer to a GEOS multipolygon. """ if isinstance(arg, MultiPolygon): return geos_geom_from_py(arg) obs = getattr(arg, 'geoms', arg) obs = [ob for ob in obs if ob and not (isinstance(ob, polygon.Polygon) and ob.is_empty)] L = len(obs) # Bail immediately if we have no input points. if L <= 0: return (lgeos.GEOSGeom_createEmptyCollection(6), 3) # This function does not accept sequences of MultiPolygons: there is # no implicit flattening. if isinstance(obs[0], MultiPolygon): raise ValueError("Sequences of multi-polygons are not valid arguments") exemplar = obs[0] try: N = len(exemplar[0][0]) except TypeError: N = exemplar._ndim assert N == 2 or N == 3 subs = (c_void_p * L)() for i, ob in enumerate(obs): if isinstance(ob, polygon.Polygon): shell = ob.exterior holes = ob.interiors else: shell = ob[0] holes = ob[1] geom, ndims = polygon.geos_polygon_from_py(shell, holes) subs[i] = cast(geom, c_void_p) return (lgeos.GEOSGeom_createCollection(6, subs, L), N)
def geos_multipolygon_from_py(ob): """ob must provide Python geo interface coordinates.""" L = len(ob) N = len(ob[0][0][0]) assert L >= 1 assert N == 2 or N == 3 subs = (c_void_p * L)() for l in range(L): geom, ndims = geos_polygon_from_py(ob[l][0], ob[l][1:]) subs[l] = cast(geom, c_void_p) return (lgeos.GEOSGeom_createCollection(6, subs, L), N)
def geos_multipolygon_from_py(ob): """ob must provide Python geo interface coordinates.""" L = len(ob) N = len(ob[0][0][0]) assert L >= 1 assert N == 2 or N == 3 subs = (c_void_p * L)() for l in xrange(L): geom, ndims = geos_polygon_from_py(ob[l][0], ob[l][1:]) subs[l] = cast(geom, c_void_p) return (lgeos.GEOSGeom_createCollection(6, subs, L), N)
def geos_multipolygon_from_polygons(arg): """ ob must be either a MultiPolygon, sequence or array of sequences or arrays. """ if isinstance(arg, MultiPolygon): return geos_geom_from_py(arg) obs = getattr(arg, 'geoms', arg) obs = [ ob for ob in obs if ob and not (isinstance(ob, polygon.Polygon) and ob.is_empty) ] L = len(obs) # Bail immediately if we have no input points. if L <= 0: return (lgeos.GEOSGeom_createEmptyCollection(6), 3) exemplar = obs[0] try: N = len(exemplar[0][0]) except TypeError: N = exemplar._ndim assert N == 2 or N == 3 subs = (c_void_p * L)() for i, ob in enumerate(obs): if isinstance(ob, polygon.Polygon): shell = ob.exterior holes = ob.interiors else: shell = ob[0] holes = ob[1] geom, ndims = polygon.geos_polygon_from_py(shell, holes) subs[i] = cast(geom, c_void_p) return (lgeos.GEOSGeom_createCollection(6, subs, L), N)
def geos_multipolygon_from_polygons(arg): """ ob must be either a MultiPolygon, sequence or array of sequences or arrays. """ if isinstance(arg, MultiPolygon): return geos_geom_from_py(arg) obs = getattr(arg, 'geoms', arg) obs = [ob for ob in obs if ob and not (isinstance(ob, polygon.Polygon) and ob.is_empty)] L = len(obs) # Bail immediately if we have no input points. if L <= 0: return (lgeos.GEOSGeom_createEmptyCollection(6), 3) exemplar = obs[0] try: N = len(exemplar[0][0]) except TypeError: N = exemplar._ndim assert N == 2 or N == 3 subs = (c_void_p * L)() for i, ob in enumerate(obs): if isinstance(ob, polygon.Polygon): shell = ob.exterior holes = ob.interiors else: shell = ob[0] holes = ob[1] geom, ndims = polygon.geos_polygon_from_py(shell, holes) subs[i] = cast(geom, c_void_p) return (lgeos.GEOSGeom_createCollection(6, subs, L), N)