有这样[[ 345781.67757921 3450137.27490482] [ 345770.50348589 3450140.34518701] [ 345766.55238788 3450156.3483929 ] [ 345774.40437287 3450177.41331698] [ 345781.08673473 3450179.15048489] [ 345805.49555079 3450155.76773854] [ 345804.20920672 3450150.38499524] [ 345788.7283822 3450138.57516753] [ 345781.67757921 3450137.27490482] [ 345793.6454703 3450139.48194457] [ 345776.76049111 3450136.36812777]]一组数据,如何计算它的凸包然后保存为geodataframe
时间: 2023-08-17 17:04:31 浏览: 106
凸包面积的计算~~~~
要计算给定数据的凸包并将其保存为Geodataframe,您可以使用Scipy库中的ConvexHull函数和Geopandas库。下面是一个示例代码:
```python
import numpy as np
import geopandas as gpd
from scipy.spatial import ConvexHull
from shapely.geometry import Polygon
# 输入数据
data = np.array([[345781.67757921, 3450137.27490482],
[345770.50348589, 3450140.34518701],
[345766.55238788, 3450156.3483929],
[345774.40437287, 3450177.41331698],
[345781.08673473, 3450179.15048489],
[345805.49555079, 3450155.76773854],
[345804.20920672, 3450150.38499524],
[345788.7283822, 3450138.57516753],
[345781.67757921, 3450137.27490482],
[345793.6454703, 3450139.48194457],
[345776.76049111, 3450136.36812777]])
# 计算凸包
hull = ConvexHull(data)
# 创建凸包多边形
polygon = Polygon(data[hull.vertices])
# 创建空的Geodataframe
gdf = gpd.GeoDataFrame(geometry=[polygon])
# 保存为shapefile格式
gdf.to_file('convex_hull.shp')
```
上述代码中,我们首先导入所需的库,包括Numpy、Geopandas、Scipy和Shapely。然后,我们定义了输入数据,即给定的数组。接下来,我们使用`ConvexHull`函数计算凸包的顶点。然后,我们使用这些顶点创建一个多边形对象。最后,我们将多边形对象保存为Geodataframe,并将其写入shapefile格式的文件。
请注意,保存为其他格式的方法也类似,只需将文件扩展名更改为相应的格式即可。
阅读全文