本文整理汇总了Python中shapely.ops.cascaded_union方法的典型用法代码示例。如果您正苦于以下问题:Python ops.cascaded_union方法的具体用法?Python ops.cascaded_union怎么用?Python ops.cascaded_union使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类shapely.ops
的用法示例。
在下文中一共展示了ops.cascaded_union方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: AttemptCollapse
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def AttemptCollapse(name, zone):
overlaps = False
for i in range(0,len(zone)):
for j in range(i+1, len(zone)):
if zone[i].overlaps(zone[j]):
overlaps = True
break
if overlaps:
break
if overlaps:
print 'Found overlapping zone on %s!' % name
mp = SMultiPolygon(zone)
collapsed = cascaded_union(mp)
if type(collapsed) == SPolygon:
return [collapsed]
else:
print 'Got multipolygon len %d' % len(collapsed.geoms)
return collapsed.geoms
else:
print 'Non-overlapping zone on %s (%d)' % (name, len(zone))
return zone
示例2: get_point_in_polygon_score
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def get_point_in_polygon_score(self, lane_seq: List[int],
xy_seq: np.ndarray, city_name: str,
avm: ArgoverseMap) -> int:
"""Get the number of coordinates that lie insde the lane seq polygon.
Args:
lane_seq: Sequence of lane ids
xy_seq: Trajectory coordinates
city_name: City name (PITT/MIA)
avm: Argoverse map_api instance
Returns:
point_in_polygon_score: Number of coordinates in the trajectory that lie within the lane sequence
"""
lane_seq_polygon = cascaded_union([
Polygon(avm.get_lane_segment_polygon(lane, city_name)).buffer(0)
for lane in lane_seq
])
point_in_polygon_score = 0
for xy in xy_seq:
point_in_polygon_score += lane_seq_polygon.contains(Point(xy))
return point_in_polygon_score
示例3: cascaded_union_with_alt
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def cascaded_union_with_alt(polyalt: AirspaceList) -> AirspaceList:
altitudes = set(alt for _, *low_up in polyalt for alt in low_up)
slices = sorted(altitudes)
if len(slices) == 1 and slices[0] is None:
simple_union = cascaded_union([p for p, *_ in polyalt])
return [ExtrudedPolygon(simple_union, float("-inf"), float("inf"))]
results: List[ExtrudedPolygon] = []
for low, up in zip(slices, slices[1:]):
matched_poly = [
p
for (p, low_, up_) in polyalt
if low_ <= low <= up_ and low_ <= up <= up_
]
new_poly = ExtrudedPolygon(cascaded_union(matched_poly), low, up)
if len(results) > 0 and new_poly.polygon.equals(results[-1].polygon):
merged = ExtrudedPolygon(new_poly.polygon, results[-1].lower, up)
results[-1] = merged
else:
results.append(new_poly)
return results
# -- Methods below are placed here because of possible circular imports --
示例4: cutpath
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def cutpath(self):
selected = self.get_selected()
tools = selected[1:]
toolgeo = cascaded_union([shp.geo for shp in tools])
target = selected[0]
if type(target.geo) == Polygon:
for ring in poly2rings(target.geo):
self.add_shape(DrawToolShape(ring.difference(toolgeo)))
self.delete_shape(target)
elif type(target.geo) == LineString or type(target.geo) == LinearRing:
self.add_shape(DrawToolShape(target.geo.difference(toolgeo)))
self.delete_shape(target)
else:
self.app.log.warning("Not implemented.")
self.replot()
示例5: union
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def union(self):
"""
Makes union of selected polygons. Original polygons
are deleted.
:return: None.
"""
results = cascaded_union([t.geo for t in self.get_selected()])
# Delete originals.
for_deletion = [s for s in self.get_selected()]
for shape in for_deletion:
self.delete_shape(shape)
# Selected geometry is now gone!
self.selected = []
self.add_shape(DrawToolShape(results))
self.replot()
示例6: buffer
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def buffer(self, buf_distance):
selected = self.get_selected()
if len(selected) == 0:
self.app.inform.emit("[warning] Nothing selected for buffering.")
return
if not isinstance(buf_distance, float):
self.app.inform.emit("[warning] Invalid distance for buffering.")
return
pre_buffer = cascaded_union([t.geo for t in selected])
results = pre_buffer.buffer(buf_distance)
self.add_shape(DrawToolShape(results))
self.replot()
示例7: subtract_polygon
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def subtract_polygon(self, points):
"""
Subtract polygon from the given object. This only operates on the paths in the original geometry, i.e. it converts polygons into paths.
:param points: The vertices of the polygon.
:return: none
"""
if self.solid_geometry is None:
self.solid_geometry = []
#pathonly should be allways True, otherwise polygons are not subtracted
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.")
self.solid_geometry=cascaded_union(diffs)
示例8: export_svg
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def export_svg(self, scale_factor=0.00):
"""
Exports the Gemoetry Object as a SVG Element
:return: SVG Element
"""
# Make sure we see a Shapely Geometry class and not a list
geom = cascaded_union(self.flatten())
# scale_factor is a multiplication factor for the SVG stroke-width used within shapely's svg export
# If 0 or less which is invalid then default to 0.05
# This value appears to work for zooming, and getting the output svg line width
# to match that viewed on screen with FlatCam
if scale_factor <= 0:
scale_factor = 0.05
# Convert to a SVG
svg_elem = geom.svg(scale_factor=scale_factor)
return svg_elem
示例9: _get_merged_polygon
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def _get_merged_polygon(self, cluster):
"""Merge polygons using shapely (Internal).
Given a single cluster from _get_merge_clusters_from_df(), This creates
and merges polygons into a single cascaded union. It first dilates the
polygons by buffer_size pixels to make them overlap, merges them,
then erodes back by buffer_size to get the merged polygon.
"""
buffer_size = self.merge_thresh + 3
nest_polygons = []
for nestinfo in cluster:
nest = dict(self.edge_contours[nestinfo['roiname']].loc[
nestinfo['nid'], :])
roitop = self.roiinfos[nestinfo['roiname']]['top']
roileft = self.roiinfos[nestinfo['roiname']]['left']
coords = _parse_annot_coords(
nest, x_offset=roileft, y_offset=roitop)
nest_polygons.append(Polygon(coords).buffer(buffer_size))
merged_polygon = cascaded_union(nest_polygons).buffer(-buffer_size)
return merged_polygon
# %% =====================================================================
示例10: LinesToPolyHoles
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def LinesToPolyHoles(lines):
# get all of the polys, both outer and holes
# if there are holes, you'll get them double:
# once as themselves and again as holes in a boundary
polys = list(polygonize(lines))
# merge to get just the outer
bounds = cascaded_union(polys)
if not iterable(bounds):
bounds = [bounds]
retval = []
for bound in bounds:
for poly in polys:
if Polygon(poly.exterior).almost_equals(bound):
retval.append(poly)
return retval
示例11: offset
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def offset(self, dist, side):
if dist == 0:
return _SidedPolygon(self.poly, self.level)
if dist < 0:
side = not side
dist = abs(dist)
if (side == c.OUTSIDE and self.isFeature) or (side == c.INSIDE and not self.isFeature):
return _SidedPolygon(self.poly.buffer(dist), self.level)
try:
buffPoly = self.poly.exterior.buffer(dist)
if len(buffPoly.interiors) > 1:
inPoly = cascaded_union([Polygon(i) for i in buffPoly.interiors])
else:
inPoly = Polygon(buffPoly.interiors[0])
return _SidedPolygon(inPoly, self.level)
except Exception:
return None
示例12: _area_at_zoom
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def _area_at_zoom(self, zoom):
if zoom not in self._cache_area_at_zoom:
# use union of all input items and, if available, intersect with
# init_bounds
if "input" in self._params_at_zoom[zoom]:
input_union = cascaded_union([
self.input[get_hash(v)].bbox(self.process_pyramid.crs)
for k, v in _flatten_tree(self._params_at_zoom[zoom]["input"])
if v is not None
])
self._cache_area_at_zoom[zoom] = input_union.intersection(
box(*self.init_bounds)
) if self.init_bounds else input_union
# if no input items are available, just use init_bounds
else:
self._cache_area_at_zoom[zoom] = box(*self.init_bounds)
return self._cache_area_at_zoom[zoom]
示例13: get_names_rings
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def get_names_rings(area):
names = []
all_rings =[]
for idx, a in enumerate(area):
rings = [LinearRing(p) for p in a['polygons']]
if len(rings) > 1:
u = cascaded_union(rings)
else:
u = rings[0]
all_rings.append(u.envelope)
if a.get('name'):
names.append(a.get('name'))
names = sorted(names)
return names, all_rings
示例14: ReadShapeFile
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def ReadShapeFile(ShapeFile):
"""
Open shapefile and create Polygon dictionary
returns dictionary of shapely Polygons
MDH
"""
#open shapefile and read shapes
Shapes = fiona.open(ShapeFile)
# get the input coordinate system
Input_CRS = Proj(Shapes.crs)
# Create a dictionary of shapely polygons
PolygonDict = {}
# loop through shapes and add to dictionary
for Feature in Shapes:
if Feature['geometry']['type'] == 'MultiPolygon':
Shape = MultiPolygon(shape(Feature['geometry']))
Value = float(Feature['properties']['ID'])
elif Feature['geometry']['type'] == 'Polygon':
Shape = Polygon(shape(Feature['geometry']))
Value = float(Feature['properties']['ID'])
#check for multipolygons
if Value in PolygonDict:
Polygons = [Shape, PolygonDict[Value]]
Shape = cascaded_union(Polygons)
#update dictionary
PolygonDict[Value] = Shape
return PolygonDict, Input_CRS
示例15: _polytree_to_shapely
# 需要导入模块: from shapely import ops [as 别名]
# 或者: from shapely.ops import cascaded_union [as 别名]
def _polytree_to_shapely(tree):
polygons, children = _polytree_node_to_shapely(tree)
# expect no left over children - should all be incorporated into polygons
# by the time recursion returns to the root.
assert len(children) == 0
union = cascaded_union(polygons)
assert union.is_valid
return union