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)
我认为你提到的方法(从总边界创建一个多边形,然后进行缓冲)确实是最好的方法。要进行转换,可以使用
shapely.geometry.box
便利函数:或者(但不确定这是否总是得到完全相同的结果),也可以首先使用
^{pr2}$cascaded_union
,缓冲区将对象合并为一个对象,然后取边界:相关问题 更多 >
编程相关推荐