我有一组几何对象。现在我想计算整个集合中的最小边界矩形。 我正在使用java拓扑套件,但我无法弄清楚如何做到这一点?
答案 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对象是:
查看有关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;
}