带JTS的最小边界矩形

需求:从整个集合中计算最小的边界矩形

 

 Geometry类有一个'getEnvelopeInternal()'返回铭文信封,但'getEnvelope()'只返回另一个Geometry。 看看javadoc,看来返回的Geometry对象是:

  1. 与空的Geometry对象匹配的空点。
  2. 单个Point,与传入的点匹配。
  3. 带有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;
} 

 

但用Google搜索过: 迭代集合并为每个对象调用getBoundary().getEnvelopeInternal()

 

看看http://tsusiatsoftware.net/jts/javadoc/index.html 如果我假设您正在使用GeometryCollection实例。如果是真的,你可以直接打电话

geometry.getEnvelope();

要么

geometry.getEnvelopeInternal();

如果你想要一个Envelope实例 它将返回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()):
}

你可能感兴趣的:(QGIS,数据库)