2011-12-15 2 views

ответ

4

Посмотрите в 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

Я никогда не использовал JTS, но гугл это:

перебирать коллекцию и для каждого объекта вызова getBoundary().getEnvelopeInternal()

+0

гм, какой срок не так гугле? не могли бы вы дать мне ссылку? – ABLX

+0

В официальной документации: http://www.vividsolutions.com/jts/JTSHome.htm, классы геометрии и конверта. – red1ynx

+0

Это не официальная документация. vividsolution не является сторонником последней версии JTS. – Agemen

0

Я просто поставить один вместе, как это.

Класс Geometry имеет «getEnvelopeInternal()», который возвращает надписанный конверт, но «getEnvelope()» просто возвращает другую геометрию.

Глядя на Javadoc, представляется, что возвращаемый объект геометрии является либо:

  1. Пустой точка соответствия пустого объекта геометрии.
  2. Один пункт, соответствующий пройденный в пункте.
  3. 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; 
}