何百万ものポリゴンが連続したカバレッジを持つベクターレイヤーがあります。形状に応じて分類する必要があります。私はすでにコンパクト(のような景観生態学からいくつかの形状インデックスを使用しています4piA / P ^ 2)、平均幅(2A / P)、形状番号(P / SQRT(A) )、私も見ました、この答えをするの丸み/コンパクトさを計算しますポリゴン?
私の問題は、これらすべてのメトリックが面積と境界のある比率のみを使用していることです。フラクタル次元インデックスでさえ、面積と周囲長(2ln(0.25P)/ ln(A))のみを使用しています。しかし、面積と周囲長が同じで形状がまったく異なる2つのポリゴンをどのように区別できますか?この分岐ポリゴンAのように:
曲線ストリップBと同じ面積と周囲で描画しようとしました。既知のインデックスはすべて同じです。しかし、私にとっては、単純なストリップ(新月のような曲線を含む)と複雑な分岐形状を区別することが非常に重要です。
多角形Bを意図的に直線ストリップではなく曲線ストリップとして表示します。これは、直線の細長い形状を検出する関連円インデックスを知っているためですが、私の多角形も同じ外接円を持っている可能性があります。凸包を構築し、面積Apolygon / Aconvexの比率を計算しても、ここでは非常に似ているかもしれません。
それでは、ベクターデータで分岐ポリゴンAとポリゴンBを自動的に明確に区別するにはどうすればよいですか?(ラスターに変換するには、非常に小さいセルサイズ、膨大なデータセット、メモリ不足が必要になるため、不可能です)。他のパラメーターを含む他の形状インデックスはありますか?理想的には、この方法は明確に分岐したポリゴンだけでなく、CとDを区別するでしょう:
私の唯一のアイデアは、凸包を構築し、その凸包からポリゴンを消去し、残された(大きな)ピースの数をカウントすることです(レイヤー全体ではなくポリゴンごとにポリゴンを消去します)。これは、ボーダーの複雑さを示している可能性があります。
後でPythonで実装する数学的な解決策/アルゴリズムを歓迎します。