在Python中以匀称的方式从MultiPolygon中移除多边形

时间:2018-07-31 12:42:09

标签: python polygon shapely

我正在使用 shapely 库在Python中处理空间对象。给定一个MultiPolygon,我要从中删除不包含障碍的多边形。但是,即使我仅使用 mapping 函数就可以从MultiPolygon中获取坐标,也没有找到一种方法来做到这一点。我已经知道要删除哪些多边形,因此识别它们没有问题。

您对如何从给定的MultiPolygon中获得子多边形有任何想法吗?

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

MultiPolygon可以直接从多边形列表中构建。同样,可以直接在组成给定多面的多边形上进行迭代:

from shapely.geometry import Polygon, MultiPolygon

P1 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
P2 = Polygon([(2, 2), (3, 2), (3, 3), (2, 3)])
M = MultiPolygon([P1, P2])

for P in M:
    print(P)

现在,这两个属性允许使用列表理解功能,以便仅过滤出满足特定条件some_condition的多边形:

M2 = MultiPolygon([P for P in M if some_condition(P)])