最小边界矩形与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()
答
我只是把一个这样在一起。
几何类有一个“getEnvelopeInternal()”返回的内切包络,但“的getEnvelope()”只是返回另一个几何。
看的Javadoc,看来返回的几何对象可以是:
- 空点匹配空几何对象。
- 单个点,与传入的点匹配。
- 多边形与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;
}
HM,有什么长期没有你一派?你可以给我链接吗? – ABLX 2011-12-15 13:23:32