一组几何的包络或凸包

Envelope or convex hull of set of geometries

我遇到了一个问题,涉及对我试图解决的几何图形进行分组。这个想法是将许多几何对象分组为“集合”或大多边形。基本上,这意味着要么找到凸包,要么找到这些多边形的联合包络作为一个集合(哪个最简单)。请注意,存在不相交对象的并集。

这是一个例子:

from shapely.geometry import Polygon, LineString, Point, MultiPoint
s = gpd.GeoSeries(
    [
        Polygon([(4, 4), (4, 2),(2,2), (2, 4)]),
        Polygon([(8, 8), (8, 6),(6,6), (6, 8)]),
        Polygon([(6, 2), (8, 2),(8,4), (6, 4)]),
        Polygon([(2, 6), (2, 8),(4,8), (4, 6)])
    ]
)

sdf = gpd.GeoDataFrame(s).reset_index()
sdf = sdf.rename(columns={0:'geometry'})

生产

我希望能够找到包含所有正方形的多边形(多多边形),或者只找到其中​​两个。我想这两种情况下的方法都是一样的。

我显然可以手动定义该多边形,但这只是一个示例,并且 1) 该多边形的形状可能不像四个最外角那么简单,并且 2) 我想自动执行此过程。

有没有办法使用 s.envelope 来做到这一点?我唯一能做的就是找到单个多边形的包络....这(在我的情况下)毫无意义。

我到处都找遍了,什么也没找到。 理想情况下,我将能够决定凸面 hull/envelope 中可以包含多少个多边形或定义其最大面积。

geopandas.envelope(df) 将为您提供所有内容的边界框

df['new_col']=0
df=df.dissolve(by='new_col')

会将所有东西合并成多边形,您可以使用 'by' 中的另一个特征合并成 len(unique(feature)) 多边形。