ポリゴンの最小MBRを取得する


8

ポリゴンを含むpostgisテーブルがあります。ポリゴンを4ポイントポリゴンに変換したい。最小のMBRを取得する。

これが私が欲しいもののイラストです:

代替テキスト

元のポリゴンはピンク色です。(ST_EnvelopeおよびBBox関数を使用して)MBRを取得するのは非常に簡単ですが、必要なものを取得する簡単な方法はありますか?

何か案は?どうもありがとう

回答:


3

そこにある単純な例では、ST_ConvexHullがその答えを提供します。より複雑なケースについては、あまり考えていませんでしたが、私の考えでは、

1)ST_ConvexHullを取得します -http : //www.postgis.org/documentation/manual-1.5SVN/ST_ConvexHull.html

PostGIS 1.5+を使用している場合2)次に、凸包のST_LongestLineを取得しますST_LongestLine(ST_ConvexHull(geom)、ST_ConvexHull(geom))これにより、長方形の2つのコーナーが表示されます(別のパーツがありますが、見つかりません)これらの2つのコーナーが対角線でない場合があるため) http://www.postgis.org/documentation/manual-1.5SVN/ST_LongestLine.html

また、ST_MinimumBoundingCircle(現在はplpgsql関数として実装されている)のコードを確認することもできます。

http://www.postgis.org/documentation/manual-1.5SVN/ST_MinimumBoundingCircle.html



3

完全な答えはここにありますが、要約すると:

  • [S]ポリゴンを回転して、そのエッジの1つをX軸と一致させます
  • 計算minmaxXY頂点について
  • これにより、最小面積の四角形(MAR)またはMBRの候補が得られます
  • (x2-x1)*(y2-y1)の領域を保存する
  • すべてのエッジに対して[S]から繰り返す
  • MBRに対応する最小領域を見つける
  • [[x]、y1]、[x2、y2]]が-[S]に適用された角度で回転する

できました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.