gpt4 book ai didi

python - 识别 GeoDataFrame 的缓冲边界

转载 作者:行者123 更新时间:2023-12-01 03:00:27 32 4
gpt4 key购买 nike

给定 Geopandas GeoDataFrame ,我想提取由 n 单位缓冲的 GeoDataFrame 的总边界。

gdf.geometry.total_bounds ,我可以访问整个 DataFrame 中组合几何图形的非缓冲边界。我想到的一种方法是获取这些边界,将它们转换为 Shapely 多边形,然后对其进行缓冲。

最佳答案

我认为你提到的方法(从总边界创建一个多边形,然后缓冲它)确实是最好的方法。要进行转换,您可以使用 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 将对象合并为一个,缓冲该对象,然后获取边界:

In [33]: s.cascaded_union
Out[33]: <shapely.geometry.multipoint.MultiPoint at 0x7fac100cd278>

In [34]: s.cascaded_union.buffer(3)
Out[34]: <shapely.geometry.polygon.Polygon at 0x7fac100cd048>

In [35]: s.cascaded_union.buffer(3).bounds
Out[35]: (-3.0, -3.0, 6.0, 8.0)

关于python - 识别 GeoDataFrame 的缓冲边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43898081/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com