带JTS的最小边界矩形

时间:2011-12-15 13:15:01

标签: java jts

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

3 个答案:

答案 0 :(得分:6)

查看http://tsusiatsoftware.net/jts/javadoc/index.html

如果我假设您正在使用GeometryCollection实例。如果是真的,你可以直接打电话

geometry.getEnvelope();

geometry.getEnvelopeInternal();

如果你想要一个信封实例

它将返回GeometryCollection的最小矩形。

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

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 :(得分:1)

我从未使用过jts,但用Google搜索过:

遍历集合并为每个对象调用getBoundary().getEnvelopeInternal()

答案 2 :(得分:0)

我只是把这个放在一起。

Geometry类有一个'getEnvelopeInternal()',它返回铭文信封,但'getEnvelope()'只返回另一个Geometry。

查看javadoc,看来返回的Geometry对象是:

  1. 与空的Geometry对象匹配的空点。
  2. 单个Point,与传入的点匹配。
  3. 带有4个坐标的多边形,用于指定封闭的信封。
  4. 查看有关Envelope的其他说明,我看到你可以“扩展”信封....所以这里是我为转换而构建的静态工具:

    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;
    }