我试图找到地球上自相交(复杂)多边形的区域。是否有任何库可以为此类几何图形正确实现面积计算?
到目前为止,我已经尝试过geolib和Polygon2(基于gpc),但它们对复杂的多边形给出了错误的结果。
或者,是否有一种简单的方法可以将自相交的多边形转换为一组简单的多边形,这样我就可以对简单的几何图形使用算法,然后对所有多边形求和?我知道一个解决方案是实现Bentley-Ottman 算法来查找交点,然后将多边形划分为一组简单的多边形,但如果有一个库我可以使用,我很乐意避免重新发明轮子(并可能引入错误)。
更新:我使用的坐标不明确包括交点。因此剪辑库似乎无法正确处理它们。例如,在下面的代码中coords_1
和coords_2
定义的多边形相同。使用 Polygon2 裁剪库。
>>> coords_1 = [(0,0), (1,1), (1,0), (0,1)]
>>> coords_2 = [(0,0), (0.5, 0.5), (1,0), (1,1), (0.5,0.5), (0,1)]
>>> Polygon(coords_1).area()
0
>>> Polygon(coords_2).area()
0.5
我想通过使用 coords_1 获得第二个结果。我也尝试过其他剪辑库,但到目前为止没有运气。