私は、都市の近所など、広いエリアを表す一連のポリゴンを持っています。それらの間の大きな重なり合う領域を識別したいと思います。
しかし、問題があります。これらのポリゴンは、周囲に沿ってオーバーラップすることがあります(精度がほとんどないために描画されたため)。これは、私が気にしない長くて狭いオーバーラップを生成します。
ただし、ロバストポリゴンの大きなオーバーラップが発生する場合もあります。これは、近隣のポリゴンが別のポリゴンとオーバーラップする大きな領域を意味します。これらだけを選択したい。
オーバーラップのみの以下の図を参照してください。左下隅の青いポリゴンだけを選択したいと想像してください。
エリアを確認することもできますが、狭いエリアが非常に長く、青いポリゴンと同じ大きさのエリアになることがあります。面積/周長の比率を計算しようとしましたが、それでも結果はまちまちです。
私もを使用してみましST_MinimumClearance
たが、広い領域に狭いパーツがアタッチされていたり、2つの非常に近い頂点がある場合があります。
他のアプローチのアイデアはありますか?
最後に、@ Cyrilと@FGregで提案されているように、ネガティブバッファーを使用するのが最も効果的でした。
私は次のようなものを使用しました:
ST_Area(ST_Buffer(geom, -10)) as neg_buffer_area
私の場合、単位はメートルなので、10 mのネガティブバッファーです。
狭いポリゴンの場合、この領域はゼロを返しました(また、ジオメトリは空になります)。次に、この列を使用して狭いポリゴンを除外しました。