2011-12-15 14 views
4

私はジオメトリオブジェクトのコレクションを持っています。今私は全体のコレクションから最小の境界の四角形を計算したいと思います。 私はJavaトポロジースイートを使用していますが、これを行う方法を理解できません。JTSを使った最小境界矩形

答えて

4

ため

反復はhttp://tsusiatsoftware.net/jts/javadoc/index.html

で見てください。それが本当ならば、あなたは直接

geometry.getEnvelope(); 

または

geometry.getEnvelopeInternal(); 

を呼び出すことができますが、封筒のインスタンス

をしたい場合はそれはあなたのジオメトリコレクションの最小矩形を返します。

ジオメトリのコレクションがある場合は、エンベロープを直接使用して、コレクションの新しいジオメトリcを処理するたびに展開できます。

Envelope env = new Envelope(); 
for(Geometry g : mySet){ 
    env.expandToInclude(g.getEnvelopeInternal()): 
} 

または

Envelope env = new Envelope(); 
for(Geometry g : mySet){ 
    env.expandToInclude(g.getBoundary().getEnvelopeInternal()): 
} 
1

私はJTSを使用していないが、このGoogleで検索したことがない:私はあなたがジオメトリコレクションのインスタンスを使用していると仮定した場合、コレクションを通じて、各オブジェクトの呼び出しgetBoundary().getEnvelopeInternal()

+0

HMを、グーグル?私にリンクをお願いしますか? – ABLX

+0

公式ドキュメント:http://www.vividsolutions.com/jts/JTSHome.htm、ジオメトリおよびエンベロープクラス。 – red1ynx

+0

公式の文書ではありません。 vividsolutionは最後のJTSバージョンのメンテナーではありません。 – Agemen

0

私はちょうどこのように一緒にものを置きます。

Geometryクラスには、内包エンベロープを返す 'getEnvelopeInternal()'がありますが、 'getEnvelope()'は別のジオメトリを返します。

  1. 空のジオメトリオブジェクトに一致する空のポイント:javadocを見てみる

    、返されたジオメトリオブジェクトがいずれかであることが表示されます。

  2. 渡された点に一致する単一の点。
  3. エンベロープを囲む4座標の多角形。封筒に他のノートを見て、私はあなたが封筒を「拡大」することができていることがわかり

....ので、ここで私が変換するために構築されたことUTIL静的です:あなたがやった用語

public static Envelope enclosingEnvelopFromGeometry(Geometry geometry) { 
    final Envelope envelope = new Envelope(); 
    final Geometry enclosingGeometry = geometry.getEnvelope(); 
    final Coordinate[] enclosingCoordinates = enclosingGeometry.getCoordinates(); 
    for (Coordinate c : enclosingCoordinates) { 
     envelope.expandToInclude(c); 
    } 
    return envelope; 
} 
関連する問題