"确定GeoDataFrame的缓冲区界限"

2024-09-27 00:20:21 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个GeopandasGeoDataFrame,我想提取由n单元缓冲的GeoDataFrame的总边界。在

使用^{},我可以访问整个数据帧中组合几何体的非缓冲边界。我想到的一个方法是取这些边界,将它们转换成一个形状良好的多边形,然后缓冲它。在


Tags: 数据方法多边形单元边界形状geodataframegeopandasgeodataframe
1条回答
网友
1楼 · 发布于 2024-09-27 00:20:21

我认为你提到的方法(从总边界创建一个多边形,然后进行缓冲)确实是最好的方法。要进行转换,可以使用shapely.geometry.box便利函数:

In [21]: s = geopandas.GeoSeries([Point(0,0), Point(0,5), Point(3,3)])

In [22]: s
Out[22]: 
0    POINT (0 0)
1    POINT (0 5)
2    POINT (3 3)
dtype: object

In [23]: s.total_bounds
Out[23]: (0.0, 0.0, 3.0, 5.0)

In [24]: import shapely.geometry

In [25]: shapely.geometry.box(*s.total_bounds)
Out[25]: <shapely.geometry.polygon.Polygon at 0x7fac100d25f8>

In [26]: print(shapely.geometry.box(*s.total_bounds))
POLYGON ((3 0, 3 5, 0 5, 0 0, 3 0))

In [27]: shapely.geometry.box(*s.total_bounds).buffer(3)
Out[27]: <shapely.geometry.polygon.Polygon at 0x7fac10041a90>

In [28]: shapely.geometry.box(*s.total_bounds).buffer(3).bounds
Out[28]: (-3.0, -3.0, 6.0, 8.0)

或者(但不确定这是否总是得到完全相同的结果),也可以首先使用cascaded_union,缓冲区将对象合并为一个对象,然后取边界:

^{pr2}$

相关问题 更多 >

    热门问题