最小边界矩形与JTS

问题描述:

我有几何对象的集合。现在我想从整个集合中计算最小的边界矩形。 我使用java拓扑套件,但我无法弄清楚如何做到这一点?最小边界矩形与JTS

有在http://tsusiatsoftware.net/jts/javadoc/index.html

看看如果我假设你正在使用的GeometryCollection实例。如果这是真的,你可以直接调用

geometry.getEnvelope(); 

geometry.getEnvelopeInternal(); 

如果你想要一个信封实例

它将返回你的GeometryCollection的最小矩形。

如果你有几何图形的集合,你可以直接使用一个信封,并在每次处理您收集的新geometryc时间展开。

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()): 
} 

我从来没有使用JTS,但Google搜索这样的:

迭代通过集合并为每个对象调用getBoundary().getEnvelopeInternal()

+0

HM,有什么长期没有你一派?你可以给我链接吗? – ABLX 2011-12-15 13:23:32

我只是把一个这样在一起。

几何类有一个“getEnvelopeInternal()”返回的内切包络,但“的getEnvelope()”只是返回另一个几何。

看的Javadoc,看来返回的几何对象可以是:

  1. 空点匹配空几何对象。
  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; 
}