2017-05-10 41 views

回答

1

我認爲你提到的方法(從總邊界創建一個多邊形,然後緩衝),確實是這樣做的最好方法。做轉換,你可以使用shapely.geometry.box方便的功能:(但不知道這是否會永遠給完全相同的結果),你也可以先對象合併成一個使用cascaded_union,緩衝

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) 

或者是然後走出界限:

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) 
+0

太棒了 - 謝謝!我沒有想過使用'shapely.geometry.box'方法。 – kuanb