自相交多边形的形状区域

问题描述 投票:0回答:1

我正在尝试计算两条曲线之间的面积。一种是对角直线,另一种是任意曲线。曲线相交,因此我不能只取一条曲线下的面积并减去另一条曲线下的面积。我的每条曲线都包含 10 个点,因此我通过将第一条曲线的坐标点(按 x 的升序)与第二条曲线的坐标点(按 x 的降序)连接来创建一个 Shapely 多边形,然后添加第一个点包围多边形的第一条曲线。当我绘制多边形和曲线时,多边形形状是正确的(请参阅示例),但是使用

Polygon(polygon_points).area
计算的多边形面积不正确。对于第一个多边形,输出约为 0.024,而对于第二个多边形,输出约为 0.008,尽管我们可以很容易地看到这些面积的值更接近。此外,整个图的面积约为 1(1 乘以 1),因此只需观察这些图,我们就可以看到蓝色区域代表的内容比输出给出的内容更多。

我认为 Shapely 可能会正计算多边形第一部分的面积,负计算第二部分(相交后)的面积。我说得对吗?

Example 1 Example 2

polygon area shapely
1个回答
0
投票

解决方案是将多边形分割成单独的不相交的多边形,并分别计算每个面积。

from shapely.ops import polygonize
    # split into multiple, non-intersecting polygons
    p_exterior = polygon.exterior
    mls = p_exterior.intersection(p_exterior)
    polygons = polygonize(mls)
    poly_area = []
    for poly in polygons:
        poly_area.append(poly.area)
    print('Area:',np.sum(poly_area))
© www.soinside.com 2019 - 2024. All rights reserved.