當前位置: 首頁>>代碼示例>>Python>>正文


Python shapely.ops方法代碼示例

本文整理匯總了Python中shapely.ops方法的典型用法代碼示例。如果您正苦於以下問題:Python shapely.ops方法的具體用法?Python shapely.ops怎麽用?Python shapely.ops使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在shapely的用法示例。


在下文中一共展示了shapely.ops方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: mask_to_poly

# 需要導入模塊: import shapely [as 別名]
# 或者: from shapely import ops [as 別名]
def mask_to_poly(mask, min_polygon_area_th=MIN_AREA):
    shapes = rasterio.features.shapes(mask.astype(np.int16), mask > 0)
    poly_list = []
    mp = shapely.ops.cascaded_union(
        shapely.geometry.MultiPolygon([
            shapely.geometry.shape(shape)
            for shape, value in shapes
        ]))

    if isinstance(mp, shapely.geometry.Polygon):
        df = pd.DataFrame({
            'area_size': [mp.area],
            'poly': [mp],
        })
    else:
        df = pd.DataFrame({
            'area_size': [p.area for p in mp],
            'poly': [p for p in mp],
        })

    df = df[df.area_size > min_polygon_area_th].sort_values(
        by='area_size', ascending=False)
    df.loc[:, 'wkt'] = df.poly.apply(lambda x: shapely.wkt.dumps(
        x, rounding_precision=0))
    df.loc[:, 'bid'] = list(range(1, len(df) + 1))
    df.loc[:, 'area_ratio'] = df.area_size / df.area_size.max()
    return df 
開發者ID:SpaceNetChallenge,項目名稱:SpaceNet_Off_Nadir_Solutions,代碼行數:29,代碼來源:generate_polygons.py

示例2: iter_data

# 需要導入模塊: import shapely [as 別名]
# 或者: from shapely import ops [as 別名]
def iter_data(self, geom_type, field_indices, slicing, mask_poly, mask_rect, clip):
        clip_poly = None
        if mask_poly is not None:
            mask_poly = conv.ogr_of_shapely(mask_poly)
            if clip:
                clip_poly = mask_poly
        elif mask_rect is not None:
            if clip:
                clip_poly = conv.ogr_of_shapely(sg.box(*mask_rect))

        ftr = None # Necessary to prevent the old swig bug
        geom = None # Necessary to prevent the old swig bug
        with self.acquire_driver_object() as (_, lyr):
            for ftr in self.iter_features_driver(slicing, mask_poly, mask_rect, lyr):
                geom = ftr.geometry()
                if geom is None or geom.IsEmpty():
                    # `geom is None` and `geom.IsEmpty()` is not exactly the same case, but whatever
                    geom = None
                    if not self.back_ds.allow_none_geometry: # pragma: no cover
                        raise Exception(
                            'None geometry in feature '
                            '(Set `allow_none_geometry=True` in Dataset constructor to silence)'
                        )
                else:
                    if clip:
                        geom = geom.Intersection(clip_poly)
                        assert not geom.IsEmpty()
                    geom = conv.shapely_of_ogr(geom)
                    if self.to_work:
                        geom = shapely.ops.transform(self.to_work, geom)
                    if geom_type == 'coordinates':
                        geom = sg.mapping(geom)['coordinates']
                    elif geom_type == 'geojson':
                        geom = sg.mapping(geom)

                yield (geom,) + tuple(
                    self._type_of_field_index[index](ftr.GetField(index))
                    if ftr.GetField(index) is not None
                    else None
                    for index in field_indices
                )

        # Necessary to prevent the old swig bug
        # https://trac.osgeo.org/gdal/ticket/6749
        del geom
        del ftr
        del clip_poly
        del mask_rect, mask_poly 
開發者ID:airware,項目名稱:buzzard,代碼行數:50,代碼來源:_a_gdal_vector.py

示例3: _ogr_of_geom

# 需要導入模塊: import shapely [as 別名]
# 或者: from shapely import ops [as 別名]
def _ogr_of_geom(self, geom, geom_type):
        if geom_type is None:
            geom = geom
        elif self.to_virtual:
            if geom_type == 'coordinates':
                geom = sg.shape({
                    'type': self.type,
                    'coordinates': geom,
                })
            geom = shapely.ops.transform(self.to_virtual, geom)
            # geom = conv.ogr_of_shapely(geom)
            # TODO: Use json and unit test
            mapping = sg.mapping(geom)
            geom = conv.ogr_of_coordinates(
                mapping['coordinates'],
                mapping['type'],
            )
            if geom is None: # pragma: no cover
                raise ValueError('Could not convert `{}` of type `{}` to `ogr.Geometry`'.format(
                    geom_type, self.type
                ))
        elif geom_type == 'coordinates':
            geom = conv.ogr_of_coordinates(geom, self.type)
            if geom is None: # pragma: no cover
                raise ValueError('Could not convert `{}` of type `{}` to `ogr.Geometry`'.format(
                    geom_type, self.type
                ))
        elif geom_type == 'shapely':
            # geom = conv.ogr_of_shapely(geom)
            # TODO: Use json and unit test
            mapping = sg.mapping(geom)
            geom = conv.ogr_of_coordinates(
                mapping['coordinates'],
                mapping['type'],
            )
            if geom is None: # pragma: no cover
                raise ValueError('Could not convert `{}` of type `{}` to `ogr.Geometry`'.format(
                    geom_type, self.type
                ))
        else:
            assert False # pragma: no cover
        return geom

    # Misc ************************************************************************************** ** 
開發者ID:airware,項目名稱:buzzard,代碼行數:46,代碼來源:_a_gdal_vector.py

示例4: _create_merged_climate_zones_metadata

# 需要導入模塊: import shapely [as 別名]
# 或者: from shapely import ops [as 別名]
def _create_merged_climate_zones_metadata(county_metadata):
    from shapely.ops import cascaded_union

    iecc_climate_zone_polygons = defaultdict(list)
    iecc_moisture_regime_polygons = defaultdict(list)
    ba_climate_zone_polygons = defaultdict(list)

    for county in county_metadata.values():
        polygon = county["polygon"]
        iecc_climate_zone = county.get("iecc_climate_zone")
        iecc_moisture_regime = county.get("iecc_moisture_regime")
        ba_climate_zone = county.get("ba_climate_zone")
        if iecc_climate_zone is not None:
            iecc_climate_zone_polygons[iecc_climate_zone].append(polygon)
        if iecc_moisture_regime is not None:
            iecc_moisture_regime_polygons[iecc_moisture_regime].append(polygon)
        if ba_climate_zone is not None:
            ba_climate_zone_polygons[ba_climate_zone].append(polygon)

    iecc_climate_zone_metadata = {}
    for iecc_climate_zone, polygons in iecc_climate_zone_polygons.items():
        polygon = cascaded_union(polygons)
        polygon = polygon.simplify(0.01)
        iecc_climate_zone_metadata[iecc_climate_zone] = {
            "iecc_climate_zone": iecc_climate_zone,
            "polygon": polygon,
            "geometry": to_geojson(polygon),
        }

    iecc_moisture_regime_metadata = {}
    for iecc_moisture_regime, polygons in iecc_moisture_regime_polygons.items():
        polygon = cascaded_union(polygons)
        polygon = polygon.simplify(0.01)
        iecc_moisture_regime_metadata[iecc_moisture_regime] = {
            "iecc_moisture_regime": iecc_moisture_regime,
            "polygon": polygon,
            "geometry": to_geojson(polygon),
        }

    ba_climate_zone_metadata = {}
    for ba_climate_zone, polygons in ba_climate_zone_polygons.items():
        polygon = cascaded_union(polygons)
        polygon = polygon.simplify(0.01)
        ba_climate_zone_metadata[ba_climate_zone] = {
            "ba_climate_zone": ba_climate_zone,
            "polygon": polygon,
            "geometry": to_geojson(polygon),
        }

    return (
        iecc_climate_zone_metadata,
        iecc_moisture_regime_metadata,
        ba_climate_zone_metadata,
    ) 
開發者ID:openeemeter,項目名稱:eeweather,代碼行數:56,代碼來源:database.py

示例5: alpha_shape

# 需要導入模塊: import shapely [as 別名]
# 或者: from shapely import ops [as 別名]
def alpha_shape(self, coords, alpha):
        import shapely.geometry as geometry
        from shapely.ops import cascaded_union, polygonize
        from scipy.spatial import Delaunay
        """
        Compute the alpha shape (concave hull) of a set
        of points.
        @param points: Iterable container of points.
        @param alpha: alpha value to influence the
            gooeyness of the border. Smaller numbers
            don't fall inward as much as larger numbers.
            Too large, and you lose everything!
        """
#         if len(points) < 4:
#             # When you have a triangle, there is no sense
#             # in computing an alpha shape.
#             return geometry.MultiPoint(list(points))
#                    .convex_hull
        def add_edge(edges, edge_points, coords, i, j):
            """
            Add a line between the i-th and j-th points,
            if not in the list already
            """
            if (i, j) in edges or (j, i) in edges:
                # already added
                return
            edges.add( (i, j) )
            edge_points.append(coords[ [i, j] ])
        
        tri = Delaunay(coords)
        edges = set()
        edge_points = []
        # loop over triangles:
        # ia, ib, ic = indices of corner points of the
        # triangle
        for ia, ib, ic in tri.vertices:
            pa = coords[ia]
            pb = coords[ib]
            pc = coords[ic]
            # Lengths of sides of triangle
            a = math.sqrt((pa[0]-pb[0])**2 + (pa[1]-pb[1])**2)
            b = math.sqrt((pb[0]-pc[0])**2 + (pb[1]-pc[1])**2)
            c = math.sqrt((pc[0]-pa[0])**2 + (pc[1]-pa[1])**2)
            # Semiperimeter of triangle
            s = (a + b + c)/2.0
            # Area of triangle by Heron's formula
            area = math.sqrt(s*(s-a)*(s-b)*(s-c))
            circum_r = a*b*c/(4.0*area)
            # Here's the radius filter.
            #print circum_r
            if circum_r < 1.0/alpha:
                add_edge(edges, edge_points, coords, ia, ib)
                add_edge(edges, edge_points, coords, ib, ic)
                add_edge(edges, edge_points, coords, ic, ia)
        m = geometry.MultiLineString(edge_points)
        triangles = list(polygonize(m))
        return cascaded_union(triangles), edge_points 
開發者ID:OCR-D,項目名稱:ocrd_anybaseocr,代碼行數:59,代碼來源:ocrd_anybaseocr_tiseg.py


注:本文中的shapely.ops方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。