如何从 python 的点列表中计算多边形的面积?

How to calculate area of polygon from list of points with python?

我有一个 list/array 个二维点,它们形成 非凸 非自相交 形状。 我想计算该多边形所包围的面积。

首先,我需要用 'curve-walk'(非自相交)提供的点形成一个多边形。如果我可以对该多边形进行三角剖分,我就可以计算出面积(我可以容忍一个小的相对误差)。

使用 scipy 的 scipy.spatial.ConvexHull() 显然会导致错误的形状和面积,但我还没有在大型数学包中找到可用的算法来执行此操作。

谁能告诉我该怎么做?

使用适用于 Python 2.7 和 3

的 shapely 模块
In [41]: from shapely.geometry import Polygon

In [48]: coords  = ((-1, 0), (-1, 1), (0, 0.5), (1, 1), (1, 0), (-1, 0))

In [49]: polygon = Polygon(coords)

In [50]: polygon.area
Out[50]: 1.5