地球上の自己交差 (複雑) ポリゴンの領域を見つけようとしています。そのようなジオメトリの面積計算を正しく実装するライブラリはありますか?
これまでのところ、 geographiclibと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 を使用して、2 番目の結果を取得したいと思います。他のクリッピング ライブラリも試しましたが、今のところうまくいきません。