Shapely自相交多边形面积计算异常问题咨询
关于Shapely计算相交曲线间面积的问题解答
你的猜测完全正确。Shapely计算多边形面积时,会受顶点环绕方向和多边形自相交特性影响:
- 当多边形存在自相交(也就是两条曲线相交导致多边形内部交叉)时,Shapely会按顶点遍历方向(顺时针/逆时针)对不同区域计算正负面积,最终结果是这些面积的代数和,而非实际的总面积,这就导致相交区域的面积相互抵消,算出的结果远小于目视的实际面积。
- 你用「第一条曲线x升序排列+第二条曲线x降序排列+闭合回起点」的方式构建的多边形,在曲线相交处形成了自相交环,直接计算就会出现面积抵消的问题。
解决办法
- 方法一:用
shapely.ops.unary_union拆分自相交多边形为多个简单子多边形,再求和所有子多边形的面积:from shapely.ops import unary_union from shapely.geometry import Polygon # 你之前创建的自相交多边形 self_intersecting_poly = Polygon(polygon_points) # 拆分得到多个不相交的简单多边形 simple_polygons = unary_union(self_intersecting_poly) # 计算总面积 total_area = sum(poly.area for poly in simple_polygons.geoms) - 方法二:先找出两条曲线的所有交点,将两条曲线都分割为交点之间的独立线段,再针对每一段无相交的区域分别计算面积后求和,从根源上避免自相交多边形的生成。
内容的提问来源于stack exchange,提问作者Liisjak
相关产品推荐
相关产品推荐

