def orient(polygon, sign=1.0): s = float(sign) rings = [] ring = polygon.exterior if signed_area(ring) / s >= 0.0: rings.append(ring) else: rings.append(list(ring.coords)[::-1]) for ring in polygon.interiors: if signed_area(ring) / s <= 0.0: rings.append(ring) else: rings.append(list(ring.coords)[::-1]) return Polygon(rings[0], rings[1:])
def orient(polygon, sign=1.0): s = float(sign) rings = [] ring = polygon.exterior if signed_area(ring)/s >= 0.0: rings.append(ring) else: rings.append(list(ring.coords)[::-1]) for ring in polygon.interiors: if signed_area(ring)/s <= 0.0: rings.append(ring) else: rings.append(list(ring.coords)[::-1]) return Polygon(rings[0], rings[1:])
def _get_inside_direction(linearring): """Gets the inside direction for parallel offset (left or right) from signed area of geometry""" if cga.signed_area(linearring) > 0: return 'left' else: return 'right'
def coordsclockwise(linearring): if cga.signed_area(linearring) < 0.0: return np.array(linearring.coords) else: return np.array(linearring.coords)[::-1]