python alphashape_Python alphashape包_程序模块 - PyPI - Python中文网

这篇博客介绍了Python的alphashape包,用于生成Alpha形状,这是一种在点集周围创建边界多边形的方法。Alpha参数决定了形状的复杂性,0对应凸面外壳,增大值会更贴近数据点。博客提供了代码示例,展示了如何使用alphashape生成不同Alpha值的形状,并提到了结合geopandas处理大型数据集的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Alpha形状工具箱

用于生成Alpha形状的工具箱。

alpha形状通常用于泛化包含点集的边界多边形。alpha参数定义为值a,使得半径为1/a的圆盘的边可以在一组点的任意两个边成员之间绘制,并且仍然包含所有点。凸面外壳是一个alpha形状,其中alpha参数等于零,该形状类似于在所有数据点上用橡皮筋包裹钉子时所看到的形状。在这个工具箱中,我们将生成α复合物,它与α形状密切相关,但由边缘点之间的直线而不是圆的弧组成。

围绕点集创建alpha形状通常需要一个视觉交互步骤,其中凹面外壳的alpha参数通过迭代或平分值来确定,以接近最佳拟合。alpha shape工具箱将提供工作流来缩短此手动过程的开发循环,或者通过求解具有特定特征的alpha shape来完全绕过它。将提供一个python api来帮助脚本生成alpha形状。还将提供一个控制台应用程序作为alpha shape工具箱的示例使用,以便于从命令行生成alpha shape。除了能够快速迭代alpha参数以生成凹面外壳的实用程序外,此工具集的框架还将提供一个模板,用于生成可从python、控制台或图形用户界面访问的gis工具集,而无需使用lic在控制台和用户界面上不安装python的情况下,对专有工具集进行限制。自由软件:麻省理工学院许可证

文档:https://alphashape.readthedocs.io rel="nofollow">https://alphashape.readthedocs.io

功能

导入依赖项importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape

定义一组点points=[(0.,0.),(0.,1.),(1.,1.),(1.,0.),(0.5,0.25),(0.5,0.75),(0.25,0.5),(0.75,0.5)]

绘制输入点fig,ax=plt.subplots()ax.scatter(*zip(*points))plt.show()

生成Alpha形状(Alpha=0.0)(凸面外壳)

每个凸包都是α形,但不是每个α形都是凸包。当使用alpha参数0调用alphashape函数时,将始终返回凸面外壳。

创建Alpha形状

alpha_shape=alphashape.alphashape(points,0.)

在输入数据上绘制Alpha形状fig,ax=plt.subplots()ax.scatter(*zip(*points))ax.add_patch(PolygonPatch(alpha_shape,alpha=0.2))plt.show()

生成Alpha形状(Alpha=2.0)(凹面外壳)

当我们增加alpha参数值时,边界形状将开始用更紧密的边界框来拟合样本数据。

创建Alpha形状

alpha_shape=alphashape.alphashape(points,2.0)

在输入数据上绘制Alpha形状fig,ax=plt.subplots()ax.scatter(*zip(*points))ax.add_patch(PolygonPatch(alpha_shape,alpha=0.2))plt.show()

生成alpha形状(alpha=3.5)

如果alpha参数过高,将开始丢失原始数据集的点数。

创建Alpha形状

alpha_shape=alphashape.alphashape(points,3.5)

在输入数据上绘制Alpha形状fig,ax=plt.subplots()ax.scatter(*zip(*points))ax.add_patch(PolygonPatch(alpha_shape,alpha=0.2))plt.show()

生成alpha形状(alpha=5.0)

如果你走得太远,你会失去一切。importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape0

importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape1

通过求解最佳alpha值生成alpha形状

如果alpha参数不是作为参数提供的,则可以对其进行求解,但对于大型数据集,这可能需要很长时间来计算。

创建Alpha形状

importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape2

在输入数据上绘制Alpha形状fig,ax=plt.subplots()ax.scatter(*zip(*points))ax.add_patch(PolygonPatch(alpha_shape,alpha=0.2))plt.show()

带有geopandas的alpha形状

样本数据

本笔记本中使用的数据可从阿拉斯加交通和公共设施部网站获取,链接如下。它包括阿拉斯加每个公共机场的点集合。

加载形状文件importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape4

importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape5

importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape6

importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape7

生成Alpha形状

Alpha形状将在GeodataFrame所在的坐标框中生成。在本例中,我们将投影到等面积投影,在坐标系中构造我们的阿尔法形状,然后转换回源投影。

投影到反照率等面积空间参考importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape8

确定α形状importsysfromdescartesimportPolygonPatchimportmatplotlib.pyplotaspltimportalphashape9

在数据点上绘制Alpha形状

板卡里投影

points=[(0.,0.),(0.,1.),(1.,1.),(1.,0.),(0.5,0.25),(0.5,0.75),(0.25,0.5),(0.75,0.5)]0

罗宾逊投影

points=[(0.,0.),(0.,1.),(1.,1.),(1.,0.),(0.5,0.25),(0.5,0.75),(0.25,0.5),(0.75,0.5)]1

学分

这个包是用cookiecutter和项目模板创建的。

历史记录

1.0.1(2019-05-06)为优化的alpha函数添加了图库图。

文档清理。

1.0.0(2019-05-06)

0.1.10(2019-05-05)正在更正PYPI长描述的格式。

0.1.9(2019-05-05)

0.1.8(2019-05-05)

0.1.7(2019-04-26)现有功能的完整代码覆盖范围。

0.1.6(2019-04-24)

0.1.5(2019-04-24)

0.1.4(2019-04-24)错误修复。

0.1.3(2019-04-24)错误修复。

0.1.2(2019-04-24)错误修复。

0.1.1(2019-04-24)错误修复。

0.1.0(2019-04-23)pypi上的第一个版本。

欢迎加入QQ群-->: 979659372

推荐PyPI第三方库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值