Revision 42283 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.jts/src/main/java/org/gvsig/fmap/geom/jts/util/JTSUtils.java

View differences:

JTSUtils.java
26 26
import java.util.Iterator;
27 27
import java.util.List;
28 28

  
29
import com.vividsolutions.jts.algorithm.HCoordinate;
29 30
import com.vividsolutions.jts.geom.Coordinate;
30 31
import com.vividsolutions.jts.geom.CoordinateSequence;
32
import com.vividsolutions.jts.geom.LineSegment;
31 33
import com.vividsolutions.jts.geom.LineString;
32 34
import com.vividsolutions.jts.geom.LinearRing;
33 35
import com.vividsolutions.jts.geom.MultiLineString;
......
35 37
import com.vividsolutions.jts.geom.Triangle;
36 38
import com.vividsolutions.jts.util.GeometricShapeFactory;
37 39

  
40
import org.slf4j.Logger;
41
import org.slf4j.LoggerFactory;
42

  
38 43
import org.gvsig.fmap.geom.Geometry;
44
import org.gvsig.fmap.geom.GeometryException;
39 45
import org.gvsig.fmap.geom.exception.CreateGeometryException;
40 46
import org.gvsig.fmap.geom.jts.GeometryJTS;
41 47
import org.gvsig.fmap.geom.jts.MCoordinate;
......
67 73
 */
68 74
public class JTSUtils {
69 75

  
76
    public static final Logger logger = LoggerFactory.getLogger(JTSUtils.class);
77

  
70 78
    public static final com.vividsolutions.jts.geom.GeometryFactory factory =
71 79
        new com.vividsolutions.jts.geom.GeometryFactory();
72 80

  
......
271 279
     * @param coordinates
272 280
     * @param interiorRings
273 281
     * @return
282
     * @throws GeometryException
274 283
     */
275 284
    public static com.vividsolutions.jts.geom.Polygon createJTSPolygon(ArrayListCoordinateSequence coordinates,
276 285
        List<Ring> interiorRings) {
277 286
        LinearRing shell = factory.createLinearRing(coordinates);
278
        List<LinearRing> holes = new ArrayList<LinearRing>(interiorRings.size());
279
        for (Iterator iterator = interiorRings.iterator(); iterator.hasNext();) {
280
            Ring ring = (Ring) iterator.next();
281
            holes.add((LinearRing) ((GeometryJTS)ring).getJTS());
287
        LinearRing[] holes = new LinearRing[interiorRings.size()];
288
        for(int i=0; i<interiorRings.size(); i++){
289
            Ring ring = interiorRings.get(i);
290
            holes[i] = (LinearRing) ((GeometryJTS) ring).getJTS();
282 291
        }
283
        return factory.createPolygon(shell, holes.toArray(new LinearRing[holes.size()]));
292
        return factory.createPolygon(shell, holes);
284 293
    }
285 294

  
286 295
    public static com.vividsolutions.jts.geom.MultiPolygon createJTSMultiPolygon(com.vividsolutions.jts.geom.Polygon[] polygons){
287 296
        return factory.createMultiPolygon(polygons);
288 297
    }
289 298

  
299
    /**
300
     * Returns the intersection point between an ellipse and her minor axis.
301
     *
302
     * @param init
303
     * @param middle
304
     * @param end
305
     * @return
306
     */
307
    public static Coordinate getPointAtYAxisInEllipse(Point init, Point end, Double ydist) {
308

  
309
        LineSegment segment = new LineSegment(((PointJTS) init).getJTSCoordinate(),
310
            ((PointJTS) end).getJTSCoordinate());
311
        Coordinate middle = segment.midPoint();
312

  
313
        LineSegment midSegment = new LineSegment(middle, ((PointJTS) end).getJTSCoordinate());
314
        double modulus = midSegment.getLength();
315

  
316
        //Mayor axis unitary vector
317
        Coordinate uni = new Coordinate(middle.x+((end.getX()-middle.x)/modulus), middle.y+((end.getY()-middle.y)/modulus));
318
        //Minor axis unitary vector
319
        Coordinate perpUni = new Coordinate(-uni.y,uni.x);
320

  
321

  
322
        Coordinate point = new Coordinate(middle.x+(perpUni.x*ydist), middle.y+(perpUni.y*ydist));
323

  
324
        return point;
325
    }
326

  
327
    /**
328
     * Returns the middle point between two points.
329
     *
330
     * @param init
331
     * @param middle
332
     * @param end
333
     * @return
334
     */
335
    public static Coordinate getMidPoint(Point init, Point end) {
336

  
337
        LineSegment segment = new LineSegment(((PointJTS) init).getJTSCoordinate(),
338
            ((PointJTS) end).getJTSCoordinate());
339
        Coordinate middle = segment.midPoint();
340
        return middle;
341
    }
342

  
343

  
290 344
}

Also available in: Unified diff