У меня есть коллекция объектов геометрии. Теперь я хочу рассчитать минимальный ограничивающий прямоугольник из всей коллекции. Я использую набор топологии java, но я не могу понять, как это сделать?Минимальный ограничивающий прямоугольник с JTS
ответ
Посмотрите в 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()):
}
Я никогда не использовал JTS, но гугл это:
перебирать коллекцию и для каждого объекта вызова getBoundary().getEnvelopeInternal()
Я просто поставить один вместе, как это.
Класс Geometry имеет «getEnvelopeInternal()», который возвращает надписанный конверт, но «getEnvelope()» просто возвращает другую геометрию.
Глядя на Javadoc, представляется, что возвращаемый объект геометрии является либо:
- Пустой точка соответствия пустого объекта геометрии.
- Один пункт, соответствующий пройденный в пункте.
- A Многоугольник с 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;
}
гм, какой срок не так гугле? не могли бы вы дать мне ссылку? – ABLX
В официальной документации: http://www.vividsolutions.com/jts/JTSHome.htm, классы геометрии и конверта. – red1ynx
Это не официальная документация. vividsolution не является сторонником последней версии JTS. – Agemen