将多面体和多边形列表转换为单个多面体

问题描述 投票:0回答:1

如何以通用方式从MultiPolygon和Polygon对象列表中创建MultiPolygon?

a = MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)])])
b = Polygon([(0, 0), (2, 1), (1, 0)])

我希望执行导致以下对象的操作:

MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)]) , Polygon([(0, 0), (2, 1), (1, 0)])])

我不是要创建一个联合,我只是想迭代所有多边形。

python shapely
1个回答
0
投票

Shapely中没有可以从多边形和MultiPolygon对象列表中创建多边形列表的功能。但是您可以为此编写一个简单的generator function

from shapely.geometry import MultiPolygon, Polygon

a = MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)])])
b = Polygon([(0, 0), (2, 1), (1, 0)])
your_list = [a, b]


def to_polygons(geometries):
    for geometry in geometries:
        if isinstance(geometry, Polygon):
            yield geometry
        else:
            yield from geometry


result = MultiPolygon(to_polygons(your_list))
print(result.wkt)
# MULTIPOLYGON (((0 0, 1 1, 1 0, 0 0)), ((0 0, 2 1, 1 0, 0 0)))
© www.soinside.com 2019 - 2024. All rights reserved.