Revision 42441

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.operation.jts/src/main/java/org/gvsig/fmap/geom/operation/offset/Offset.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2015 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.fmap.geom.operation.offset;
24

  
25
import org.gvsig.fmap.geom.Geometry;
26
import org.gvsig.fmap.geom.GeometryLocator;
27
import org.gvsig.fmap.geom.GeometryManager;
28
import org.gvsig.fmap.geom.operation.GeometryOperation;
29
import org.gvsig.fmap.geom.operation.GeometryOperationContext;
30
import org.gvsig.fmap.geom.operation.GeometryOperationException;
31
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
32

  
33

  
34
/**
35
 * This class builds an offset from a geometry and a distance
36
 *
37
 * @author fdiaz
38
 * @version $Id$
39
 *
40
 */
41
public class Offset extends GeometryOperation {
42
    public static final String NAME = "offset";
43
    private static GeometryManager geomManager = GeometryLocator.getGeometryManager();
44
    public static final int CODE = geomManager.getGeometryOperationCode(NAME);
45

  
46
    /* (non-Javadoc)
47
     * @see org.gvsig.fmap.geom.operation.GeometryOperation#invoke(org.gvsig.fmap.geom.Geometry, org.gvsig.fmap.geom.operation.GeometryOperationContext)
48
     */
49
    public Object invoke(Geometry geom, GeometryOperationContext ctx) throws GeometryOperationException {
50
        try {
51
            return geom.offset(((Double)ctx.getAttribute("geom")).doubleValue());
52
        } catch (GeometryOperationNotSupportedException e) {
53
            throw new GeometryOperationException(e);
54
        }
55
    }
56

  
57
    /* (non-Javadoc)
58
     * @see org.gvsig.fmap.geom.operation.GeometryOperation#getOperationIndex()
59
     */
60
    public int getOperationIndex() {
61
        return CODE;
62
        }
63

  
64
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.operation.jts/src/main/java/org/gvsig/fmap/geom/operation/impl/DefaultGeometryOperationLibrary.java
34 34
import org.gvsig.fmap.geom.operation.fromwkb.FromWKB;
35 35
import org.gvsig.fmap.geom.operation.fromwkt.FromWKT;
36 36
import org.gvsig.fmap.geom.operation.isCCW.IsCCW;
37
import org.gvsig.fmap.geom.operation.offset.Offset;
37 38
import org.gvsig.fmap.geom.operation.perimeter.Perimeter;
38 39
import org.gvsig.fmap.geom.operation.perpendicular.Perpendicular;
39 40
import org.gvsig.fmap.geom.operation.perpendicular.PerpendicularPoint;
......
47 48
import org.gvsig.fmap.geom.operation.relationship.Overlaps;
48 49
import org.gvsig.fmap.geom.operation.relationship.Touches;
49 50
import org.gvsig.fmap.geom.operation.relationship.Within;
50
import org.gvsig.fmap.geom.operation.towkb.ToWKBNative;
51 51
import org.gvsig.fmap.geom.operation.utils.PointGetAngle;
52 52
import org.gvsig.tools.library.AbstractLibrary;
53 53
import org.gvsig.tools.library.LibraryException;
......
90 90
        geometryManager.registerGeometryOperation(Perpendicular.NAME,  new Perpendicular(), TYPES.POINT);
91 91
        geometryManager.registerGeometryOperation(PerpendicularPoint.NAME,  new PerpendicularPoint(), TYPES.POINT);
92 92
        geometryManager.registerGeometryOperation(UnitVector.NAME,  new UnitVector(), TYPES.POINT);
93
        geometryManager.registerGeometryOperation(Offset.NAME, new Offset());
93 94

  
94 95

  
95 96
        //To JTS
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/primitive/ring/Ring3D.java
23 23
package org.gvsig.fmap.geom.jts.primitive.ring;
24 24

  
25 25
import com.vividsolutions.jts.geom.Coordinate;
26
import com.vividsolutions.jts.geom.GeometryFactory;
27
import com.vividsolutions.jts.geom.LinearRing;
28
import com.vividsolutions.jts.geomgraph.Position;
29
import com.vividsolutions.jts.operation.buffer.BufferParameters;
30
import com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder;
26 31

  
27 32
import org.gvsig.fmap.geom.Geometry;
28 33
import org.gvsig.fmap.geom.GeometryException;
......
34 39
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line3D;
35 40
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon3D;
36 41
import org.gvsig.fmap.geom.jts.util.JTSUtils;
42
import org.gvsig.fmap.geom.operation.GeometryOperationException;
43
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
37 44
import org.gvsig.fmap.geom.primitive.Ring;
38 45

  
39 46

  
......
95 102
    public com.vividsolutions.jts.geom.Geometry getJTS() {
96 103
        return JTSUtils.createJTSLinearRing(coordinates);
97 104
    }
105

  
106
    /* (non-Javadoc)
107
    * @see org.gvsig.fmap.geom.Geometry#offset(double)
108
    */
109
      public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
110
          com.vividsolutions.jts.geom.LinearRing jtsRing = (LinearRing) getJTS();
111
          GeometryFactory factory = jtsRing.getFactory();
112
          BufferParameters bufParams = JTSUtils.getBufferParameters();
113

  
114
          OffsetCurveBuilder ocb = new OffsetCurveBuilder(factory.getPrecisionModel(), bufParams);
115

  
116
          Coordinate[] coordinates = jtsRing.getCoordinates();
117
          Coordinate[] coords = ocb.getRingCurve(coordinates, Position.LEFT, distance); // .getOffsetCurve(coordinates,
118

  
119
          return new Ring3D(coords);
120
      }
98 121
}
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/primitive/ring/Ring2DM.java
23 23
package org.gvsig.fmap.geom.jts.primitive.ring;
24 24

  
25 25
import com.vividsolutions.jts.geom.Coordinate;
26
import com.vividsolutions.jts.geom.GeometryFactory;
27
import com.vividsolutions.jts.geom.LinearRing;
28
import com.vividsolutions.jts.geomgraph.Position;
29
import com.vividsolutions.jts.operation.buffer.BufferParameters;
30
import com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder;
26 31

  
27 32
import org.gvsig.fmap.geom.Geometry;
28 33
import org.gvsig.fmap.geom.GeometryException;
......
39 44
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon2D;
40 45
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon2DM;
41 46
import org.gvsig.fmap.geom.jts.util.JTSUtils;
47
import org.gvsig.fmap.geom.operation.GeometryOperationException;
48
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
42 49
import org.gvsig.fmap.geom.primitive.Ring;
43 50

  
44 51
/**
......
94 101
    public com.vividsolutions.jts.geom.Geometry getJTS() {
95 102
        return JTSUtils.createJTSLinearRing(coordinates);
96 103
    }
104

  
105
    /* (non-Javadoc)
106
    * @see org.gvsig.fmap.geom.Geometry#offset(double)
107
    */
108
      public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
109
          com.vividsolutions.jts.geom.LinearRing jtsRing = (LinearRing) getJTS();
110
          GeometryFactory factory = jtsRing.getFactory();
111
          BufferParameters bufParams = JTSUtils.getBufferParameters();
112

  
113
          OffsetCurveBuilder ocb = new OffsetCurveBuilder(factory.getPrecisionModel(), bufParams);
114

  
115
          Coordinate[] coordinates = jtsRing.getCoordinates();
116
          Coordinate[] coords = ocb.getRingCurve(coordinates, Position.LEFT, distance); // .getOffsetCurve(coordinates,
117

  
118
          return new Ring2DM(coords);
119
      }
97 120
}
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/primitive/ring/Ring3DM.java
23 23
package org.gvsig.fmap.geom.jts.primitive.ring;
24 24

  
25 25
import com.vividsolutions.jts.geom.Coordinate;
26
import com.vividsolutions.jts.geom.GeometryFactory;
27
import com.vividsolutions.jts.geom.LinearRing;
28
import com.vividsolutions.jts.geomgraph.Position;
29
import com.vividsolutions.jts.operation.buffer.BufferParameters;
30
import com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder;
26 31

  
27 32
import org.gvsig.fmap.geom.Geometry;
28 33
import org.gvsig.fmap.geom.GeometryException;
......
38 43
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon3D;
39 44
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon3DM;
40 45
import org.gvsig.fmap.geom.jts.util.JTSUtils;
46
import org.gvsig.fmap.geom.operation.GeometryOperationException;
47
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
41 48
import org.gvsig.fmap.geom.primitive.Ring;
42 49

  
43 50

  
......
99 106
    public com.vividsolutions.jts.geom.Geometry getJTS() {
100 107
        return JTSUtils.createJTSLinearRing(coordinates);
101 108
    }
109

  
110
    /* (non-Javadoc)
111
    * @see org.gvsig.fmap.geom.Geometry#offset(double)
112
    */
113
      public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
114
          com.vividsolutions.jts.geom.LinearRing jtsRing = (LinearRing) getJTS();
115
          GeometryFactory factory = jtsRing.getFactory();
116
          BufferParameters bufParams = JTSUtils.getBufferParameters();
117

  
118
          OffsetCurveBuilder ocb = new OffsetCurveBuilder(factory.getPrecisionModel(), bufParams);
119

  
120
          Coordinate[] coordinates = jtsRing.getCoordinates();
121
          Coordinate[] coords = ocb.getRingCurve(coordinates, Position.LEFT, distance); // .getOffsetCurve(coordinates,
122

  
123
          return new Ring3DM(coords);
124
      }
102 125
}
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/primitive/ring/Ring2D.java
25 25
import java.util.Iterator;
26 26

  
27 27
import com.vividsolutions.jts.geom.Coordinate;
28
import com.vividsolutions.jts.geom.GeometryFactory;
29
import com.vividsolutions.jts.geom.LinearRing;
30
import com.vividsolutions.jts.geomgraph.Position;
31
import com.vividsolutions.jts.operation.buffer.BufferParameters;
32
import com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder;
28 33

  
29 34
import org.gvsig.fmap.geom.Geometry;
30 35
import org.gvsig.fmap.geom.GeometryException;
......
39 44
import org.gvsig.fmap.geom.jts.util.JTSUtils;
40 45
import org.gvsig.fmap.geom.operation.GeometryOperationException;
41 46
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
47
import org.gvsig.fmap.geom.primitive.Polygon;
42 48
import org.gvsig.fmap.geom.primitive.Ring;
43 49

  
44 50
/**
......
100 106
        return JTSUtils.createJTSLinearRing(coordinates);
101 107
    }
102 108

  
109

  
110
    /* (non-Javadoc)
111
    * @see org.gvsig.fmap.geom.Geometry#offset(double)
112
    */
113
      public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
114
          com.vividsolutions.jts.geom.LinearRing jtsRing = (LinearRing) getJTS();
115
          GeometryFactory factory = jtsRing.getFactory();
116
          BufferParameters bufParams = JTSUtils.getBufferParameters();
117

  
118
          OffsetCurveBuilder ocb = new OffsetCurveBuilder(factory.getPrecisionModel(), bufParams);
119

  
120
          Coordinate[] coordinates = jtsRing.getCoordinates();
121
          Coordinate[] coords = ocb.getRingCurve(coordinates, Position.LEFT, distance); // .getOffsetCurve(coordinates,
122

  
123
          return new Ring2D(coords);
124
      }
103 125
}
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/primitive/curve/arc/AbstractArc.java
439 439
        return angle;
440 440
    }
441 441

  
442

  
443
    /* (non-Javadoc)
444
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
445
     */
446
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
447
        // TODO Auto-generated method stub
448
        Point center = getCenterPoint();
449
        double radius = center.distance(init);
450
        double scale = (radius+distance)/radius;
451
        AffineTransform at = getScaleAffineTransform(center, scale);
452
        Geometry cloned = this.cloneGeometry();
453
        cloned.transform(at);
454
        return cloned;
455
    }
456

  
457
    protected AffineTransform getScaleAffineTransform(Point center, Double scale)
458
        throws GeometryOperationNotSupportedException,
459
        GeometryOperationException {
460

  
461
        AffineTransform translate =
462
            AffineTransform
463
                .getTranslateInstance(-center.getX(), -center.getY());
464

  
465
        AffineTransform scaleTransform = AffineTransform.getScaleInstance(scale,scale);
466

  
467
        AffineTransform inverseTranslate =
468
            AffineTransform.getTranslateInstance(center.getX(), center.getY());
469
        AffineTransform at = new AffineTransform(translate);
470

  
471
        at.preConcatenate(scaleTransform);
472
        at.preConcatenate(inverseTranslate);
473
        return at;
474
    }
442 475
}
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/primitive/curve/arc/Arc2D.java
22 22
 */
23 23
package org.gvsig.fmap.geom.jts.primitive.curve.arc;
24 24

  
25
import java.awt.geom.AffineTransform;
25 26
import java.awt.geom.PathIterator;
26 27

  
27 28
import com.vividsolutions.jts.geom.Coordinate;
......
40 41
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon2D;
41 42
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
42 43
import org.gvsig.fmap.geom.jts.util.JTSUtils;
44
import org.gvsig.fmap.geom.operation.GeometryOperationException;
45
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
43 46
import org.gvsig.fmap.geom.primitive.Line;
44 47
import org.gvsig.fmap.geom.primitive.Point;
45 48
import org.gvsig.fmap.geom.primitive.Polygon;
......
126 129
     */
127 130
    public Geometry cloneGeometry() {
128 131
        Arc2D arc2D = new Arc2D();
129
        arc2D.setPoints((Point)init.cloneGeometry(), (Point)middle.cloneGeometry(), (Point)end.cloneGeometry());
132
        Point clonedInit = (Point)init.cloneGeometry();
133
        Point clonedMiddle = (Point)middle.cloneGeometry();
134
        Point clonedEnd = (Point)end.cloneGeometry();
135
        arc2D.setPoints(clonedInit, clonedMiddle, clonedEnd);
130 136
        return arc2D;
131 137
    }
132 138

  
......
213 219
        return multiPolygon;
214 220
    }
215 221

  
216

  
217 222
}
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/primitive/curve/arc/Arc2DZ.java
22 22
 */
23 23
package org.gvsig.fmap.geom.jts.primitive.curve.arc;
24 24

  
25
import java.awt.geom.AffineTransform;
25 26
import java.awt.geom.PathIterator;
26 27

  
27 28
import com.vividsolutions.jts.geom.Coordinate;
......
40 41
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon3D;
41 42
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
42 43
import org.gvsig.fmap.geom.jts.util.JTSUtils;
44
import org.gvsig.fmap.geom.operation.GeometryOperationException;
45
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
43 46
import org.gvsig.fmap.geom.primitive.Line;
44 47
import org.gvsig.fmap.geom.primitive.Point;
45 48
import org.gvsig.fmap.geom.primitive.Polygon;
......
234 237
        multiPolygon.addPrimitive(polygon);
235 238
        return multiPolygon;
236 239
    }
237

  
238 240
}
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/primitive/curve/line/Line2DM.java
23 23
package org.gvsig.fmap.geom.jts.primitive.curve.line;
24 24

  
25 25
import com.vividsolutions.jts.geom.Coordinate;
26
import com.vividsolutions.jts.geom.GeometryFactory;
26 27

  
27 28
import org.gvsig.fmap.geom.Geometry;
29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.jts.util.OpenJUMPUtils;
31
import org.gvsig.fmap.geom.operation.GeometryOperationException;
32
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
28 33
import org.gvsig.fmap.geom.primitive.Line;
29 34

  
30 35

  
......
61 66
    public Geometry cloneGeometry() {
62 67
        return new Line2DM(cloneCoordinates().toCoordinateArray());
63 68
    }
69

  
70
    /* (non-Javadoc)
71
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
72
     */
73
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
74

  
75
        if (isClosed()) {
76
            return JTSUtils.offsetClosedLine(this.coordinates, distance);
77
        } else {
78
//            return JTSUtils.offsetRawOpenLine(this.coordinates, distance);
79
            return OpenJUMPUtils.offsetCleanOpenLine(this.coordinates, distance);
80
        }
81
    }
64 82
}
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/primitive/curve/line/Line3DM.java
23 23
package org.gvsig.fmap.geom.jts.primitive.curve.line;
24 24

  
25 25
import com.vividsolutions.jts.geom.Coordinate;
26
import com.vividsolutions.jts.geom.GeometryFactory;
26 27

  
27 28
import org.gvsig.fmap.geom.Geometry;
29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.jts.util.OpenJUMPUtils;
31
import org.gvsig.fmap.geom.operation.GeometryOperationException;
32
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
28 33
import org.gvsig.fmap.geom.primitive.Line;
29 34

  
30 35

  
......
60 65
        return new Line3DM(cloneCoordinates().toCoordinateArray());
61 66
     }
62 67

  
68
    /* (non-Javadoc)
69
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
70
     */
71
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
63 72

  
73
        if (isClosed()) {
74
            return JTSUtils.offsetClosedLine(this.coordinates, distance);
75
        } else {
76
//            return JTSUtils.offsetRawOpenLine(this.coordinates, distance);
77
            return OpenJUMPUtils.offsetCleanOpenLine(this.coordinates, distance);
78
        }
79
    }
80

  
64 81
}
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/primitive/curve/line/Line2D.java
23 23
package org.gvsig.fmap.geom.jts.primitive.curve.line;
24 24

  
25 25
import com.vividsolutions.jts.geom.Coordinate;
26
import com.vividsolutions.jts.geom.GeometryFactory;
26 27

  
27 28
import org.gvsig.fmap.geom.Geometry;
29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.jts.util.OpenJUMPUtils;
31
import org.gvsig.fmap.geom.operation.GeometryOperationException;
32
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
28 33
import org.gvsig.fmap.geom.primitive.Line;
29 34

  
30 35

  
......
63 68
        return new Line2D(cloneCoordinates().toCoordinateArray());
64 69
    }
65 70

  
71
    /* (non-Javadoc)
72
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
73
     */
74
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
66 75

  
76
        if (isClosed()) {
77
            return JTSUtils.offsetClosedLine(this.coordinates, distance);
78
        } else {
79
//            return JTSUtils.offsetRawOpenLine(this.coordinates, distance);
80
            return OpenJUMPUtils.offsetCleanOpenLine(this.coordinates, distance);
81
        }
82
    }
83

  
84

  
67 85
}
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/primitive/curve/line/Line3D.java
23 23
package org.gvsig.fmap.geom.jts.primitive.curve.line;
24 24

  
25 25
import com.vividsolutions.jts.geom.Coordinate;
26
import com.vividsolutions.jts.geom.GeometryFactory;
26 27

  
27 28
import org.gvsig.fmap.geom.Geometry;
29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.jts.util.OpenJUMPUtils;
31
import org.gvsig.fmap.geom.operation.GeometryOperationException;
32
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
28 33
import org.gvsig.fmap.geom.primitive.Line;
29 34

  
30 35

  
......
59 64
    public Geometry cloneGeometry() {
60 65
        return new Line3D(cloneCoordinates().toCoordinateArray());
61 66
    }
67

  
68
    /* (non-Javadoc)
69
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
70
     */
71
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
72

  
73
        if (isClosed()) {
74
            return JTSUtils.offsetClosedLine(this.coordinates, distance);
75
        } else {
76
//            return JTSUtils.offsetRawOpenLine(this.coordinates, distance);
77
            return OpenJUMPUtils.offsetCleanOpenLine(this.coordinates, distance);
78
        }
79
    }
62 80
}
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/primitive/curve/circumference/Circumference2DZ.java
27 27
import org.gvsig.fmap.geom.jts.primitive.surface.circle.BaseCircle2DZ;
28 28
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
29 29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.operation.GeometryOperationException;
31
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
30 32
import org.gvsig.fmap.geom.primitive.Circumference;
31 33
import org.gvsig.fmap.geom.primitive.Point;
32 34

  
......
72 74
        clone.setPoints(((PointJTS)((PointJTS)center).cloneGeometry()), radius);
73 75
        return clone;
74 76
    }
77

  
78

  
79
    /* (non-Javadoc)
80
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
81
     */
82
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
83
        return new Circumference2DZ(((PointJTS)((PointJTS)center).cloneGeometry()), radius+distance);
84
    }
75 85
}
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/primitive/curve/circumference/Circumference2D.java
27 27
import org.gvsig.fmap.geom.jts.primitive.surface.circle.BaseCircle2D;
28 28
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
29 29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.operation.GeometryOperationException;
31
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
30 32
import org.gvsig.fmap.geom.primitive.Circumference;
31 33
import org.gvsig.fmap.geom.primitive.Point;
32 34

  
......
76 78
        return clone;
77 79
    }
78 80

  
81

  
82
    /* (non-Javadoc)
83
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
84
     */
85
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
86
        return new Circumference2D(((PointJTS)((PointJTS)center).cloneGeometry()), radius+distance);
87
    }
88

  
89

  
79 90
}
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/primitive/curve/spline/Spline2DM.java
40 40
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon2DM;
41 41
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
42 42
import org.gvsig.fmap.geom.jts.util.JTSUtils;
43
import org.gvsig.fmap.geom.jts.util.ReadOnlyCoordinates;
43
import org.gvsig.fmap.geom.jts.util.OpenJUMPUtils;
44
import org.gvsig.fmap.geom.operation.GeometryOperationException;
45
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
44 46
import org.gvsig.fmap.geom.primitive.Line;
45 47
import org.gvsig.fmap.geom.primitive.Point;
46 48
import org.gvsig.fmap.geom.primitive.Polygon;
......
189 191
        anyVertex = vertex;
190 192
        return vertex;
191 193
    }
194

  
195
    /* (non-Javadoc)
196
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
197
     */
198
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
199
        Coordinate[] coords = getJTS().getCoordinates();
200
        ArrayListCoordinateSequence listCoordSequence = new ArrayListCoordinateSequence(new ArrayList<Coordinate>());
201
        for (int i = 0; i < coords.length; i++) {
202
            listCoordSequence.add(coords[i]);
203
        }
204
        if (isClosed()) {
205
            return JTSUtils.offsetClosedLine(listCoordSequence, distance);
206
        } else {
207
            return OpenJUMPUtils.offsetCleanOpenLine(listCoordSequence, distance);
208
        }
209
    }
192 210
}
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/primitive/curve/spline/AbstractSpline.java
135 135

  
136 136
    }
137 137

  
138

  
139
//    /*
140
//     * (non-Javadoc)
141
//     *
142
//     * @see org.gvsig.fmap.geom.primitive.OrientablePrimitive#getVertex(int)
143
//     */
144
//    public Point getVertex(int index) {
145
//        anyVertex.setJTSCoordinate(coordinates.get(index));
146
//        return anyVertex;
147
//    }
148

  
149 138
    /*
150 139
     * (non-Javadoc)
151 140
     *
......
561 550
        return cloned;
562 551
    }
563 552

  
553

  
554
    protected boolean isClosed(){
555
        return coordinates.get(0).equals(coordinates.get(coordinates.size()-1));
556
    }
557

  
564 558
}
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/primitive/curve/spline/Spline3DM.java
25 25
import java.util.ArrayList;
26 26

  
27 27
import com.vividsolutions.jts.geom.Coordinate;
28
import com.vividsolutions.jts.geom.CoordinateSequence;
29 28

  
30 29
import org.gvsig.fmap.geom.Geometry;
31
import org.gvsig.fmap.geom.GeometryException;
32
import org.gvsig.fmap.geom.aggregate.MultiLine;
33
import org.gvsig.fmap.geom.aggregate.MultiPoint;
34
import org.gvsig.fmap.geom.aggregate.MultiPolygon;
35
import org.gvsig.fmap.geom.jts.aggregate.MultiLine3DM;
36
import org.gvsig.fmap.geom.jts.aggregate.MultiPoint3DM;
37
import org.gvsig.fmap.geom.jts.aggregate.MultiPolygon3DM;
38
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line3DM;
39
import org.gvsig.fmap.geom.jts.primitive.point.Point3D;
40
import org.gvsig.fmap.geom.jts.primitive.point.Point3DM;
41
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon3DM;
42 30
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
43 31
import org.gvsig.fmap.geom.jts.util.JTSUtils;
44
import org.gvsig.fmap.geom.jts.util.ReadOnlyCoordinates;
45
import org.gvsig.fmap.geom.primitive.Line;
46
import org.gvsig.fmap.geom.primitive.Point;
47
import org.gvsig.fmap.geom.primitive.Polygon;
32
import org.gvsig.fmap.geom.jts.util.OpenJUMPUtils;
33
import org.gvsig.fmap.geom.operation.GeometryOperationException;
34
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
48 35
import org.gvsig.fmap.geom.primitive.Spline;
49 36

  
50 37

  
......
79 66
    public Geometry cloneGeometry() {
80 67
        return new Spline3DM(cloneCoordinates().toCoordinateArray());
81 68
    }
69

  
70
    /* (non-Javadoc)
71
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
72
     */
73
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
74
        Coordinate[] coords = getJTS().getCoordinates();
75
        ArrayListCoordinateSequence listCoordSequence = new ArrayListCoordinateSequence(new ArrayList<Coordinate>());
76
        for (int i = 0; i < coords.length; i++) {
77
            listCoordSequence.add(coords[i]);
78
        }
79
        if (isClosed()) {
80
            return JTSUtils.offsetClosedLine(listCoordSequence, distance);
81
        } else {
82
            return OpenJUMPUtils.offsetCleanOpenLine(listCoordSequence, distance);
83
        }
84
    }
82 85
}
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/primitive/curve/spline/Spline2D.java
27 27
import com.vividsolutions.jts.geom.Coordinate;
28 28

  
29 29
import org.gvsig.fmap.geom.Geometry;
30
import org.gvsig.fmap.geom.GeometryException;
31
import org.gvsig.fmap.geom.aggregate.MultiLine;
32
import org.gvsig.fmap.geom.aggregate.MultiPoint;
33
import org.gvsig.fmap.geom.aggregate.MultiPolygon;
34
import org.gvsig.fmap.geom.jts.aggregate.MultiLine2D;
35
import org.gvsig.fmap.geom.jts.aggregate.MultiPoint2D;
36
import org.gvsig.fmap.geom.jts.aggregate.MultiPolygon2D;
37
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line2D;
38
import org.gvsig.fmap.geom.jts.primitive.point.Point2D;
39
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon2D;
40 30
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
41
import org.gvsig.fmap.geom.jts.util.ReadOnlyCoordinates;
42
import org.gvsig.fmap.geom.primitive.Line;
43
import org.gvsig.fmap.geom.primitive.Point;
44
import org.gvsig.fmap.geom.primitive.Polygon;
31
import org.gvsig.fmap.geom.jts.util.JTSUtils;
32
import org.gvsig.fmap.geom.jts.util.OpenJUMPUtils;
33
import org.gvsig.fmap.geom.operation.GeometryOperationException;
34
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
45 35
import org.gvsig.fmap.geom.primitive.Spline;
46 36

  
47

  
48 37
/**
49 38
 * @author fdiaz
50 39
 *
51 40
 */
52
public class Spline2D extends BaseSpline2D implements Spline{
41
public class Spline2D extends BaseSpline2D implements Spline {
53 42

  
54 43
    /**
55 44
     *
......
70 59
        super(Geometry.TYPES.SPLINE, coordinates);
71 60
    }
72 61

  
73
    /* (non-Javadoc)
62
    /*
63
     * (non-Javadoc)
64
     *
74 65
     * @see org.gvsig.fmap.geom.Geometry#cloneGeometry()
75 66
     */
76 67
    public Geometry cloneGeometry() {
77 68
        return new Spline2D(cloneCoordinates().toCoordinateArray());
78
     }
69
    }
70

  
71
    /*
72
     * (non-Javadoc)
73
     *
74
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
75
     */
76
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
77
        Coordinate[] coords = getJTS().getCoordinates();
78
        ArrayListCoordinateSequence listCoordSequence = new ArrayListCoordinateSequence(new ArrayList<Coordinate>());
79
        for (int i = 0; i < coords.length; i++) {
80
            listCoordSequence.add(coords[i]);
81
        }
82
        if (isClosed()) {
83
            return JTSUtils.offsetClosedLine(listCoordSequence, distance);
84
        } else {
85
            return OpenJUMPUtils.offsetCleanOpenLine(listCoordSequence, distance);
86
        }
87
    }
79 88
}
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/primitive/curve/spline/Spline3D.java
27 27
import com.vividsolutions.jts.geom.Coordinate;
28 28

  
29 29
import org.gvsig.fmap.geom.Geometry;
30
import org.gvsig.fmap.geom.GeometryException;
31
import org.gvsig.fmap.geom.aggregate.MultiLine;
32
import org.gvsig.fmap.geom.aggregate.MultiPoint;
33
import org.gvsig.fmap.geom.aggregate.MultiPolygon;
34
import org.gvsig.fmap.geom.jts.aggregate.MultiLine3D;
35
import org.gvsig.fmap.geom.jts.aggregate.MultiPoint3D;
36
import org.gvsig.fmap.geom.jts.aggregate.MultiPolygon3D;
37
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line3D;
38
import org.gvsig.fmap.geom.jts.primitive.point.Point3D;
39
import org.gvsig.fmap.geom.jts.primitive.point.Point3DM;
40
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon3D;
41 30
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
42
import org.gvsig.fmap.geom.jts.util.ReadOnlyCoordinates;
43
import org.gvsig.fmap.geom.primitive.Line;
44
import org.gvsig.fmap.geom.primitive.Point;
45
import org.gvsig.fmap.geom.primitive.Polygon;
31
import org.gvsig.fmap.geom.jts.util.JTSUtils;
32
import org.gvsig.fmap.geom.jts.util.OpenJUMPUtils;
33
import org.gvsig.fmap.geom.operation.GeometryOperationException;
34
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
46 35
import org.gvsig.fmap.geom.primitive.Spline;
47 36

  
48 37

  
......
78 67
        return new Spline3D(cloneCoordinates().toCoordinateArray());
79 68
    }
80 69

  
70
    /* (non-Javadoc)
71
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
72
     */
73
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
74
        Coordinate[] coords = getJTS().getCoordinates();
75
        ArrayListCoordinateSequence listCoordSequence = new ArrayListCoordinateSequence(new ArrayList<Coordinate>());
76
        for (int i = 0; i < coords.length; i++) {
77
            listCoordSequence.add(coords[i]);
78
        }
79
        if (isClosed()) {
80
            return JTSUtils.offsetClosedLine(listCoordSequence, distance);
81
        } else {
82
            return OpenJUMPUtils.offsetCleanOpenLine(listCoordSequence, distance);
83
        }
84
    }
85

  
81 86
}
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/primitive/curve/periellipse/PeriEllipse2DZ.java
23 23
package org.gvsig.fmap.geom.jts.primitive.curve.periellipse;
24 24

  
25 25
import org.gvsig.fmap.geom.Geometry;
26
import org.gvsig.fmap.geom.GeometryLocator;
27
import org.gvsig.fmap.geom.GeometryManager;
28
import org.gvsig.fmap.geom.jts.primitive.point.Point2D;
26 29
import org.gvsig.fmap.geom.jts.primitive.surface.ellipse.BaseEllipse2DZ;
27 30
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
28 31
import org.gvsig.fmap.geom.jts.util.JTSUtils;
32
import org.gvsig.fmap.geom.operation.GeometryOperationException;
33
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
29 34
import org.gvsig.fmap.geom.primitive.PeriEllipse;
30 35
import org.gvsig.fmap.geom.primitive.Point;
31 36

  
......
76 81
        notifyDeprecated(message);
77 82
        throw new UnsupportedOperationException(message);
78 83
    }
84

  
85
    /* (non-Javadoc)
86
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
87
     */
88
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
89
        PeriEllipse clonedEllipse = (PeriEllipse) this.cloneGeometry();
90

  
91
        GeometryManager geomManager = GeometryLocator.getGeometryManager();
92
        Point center = new Point2D((getAxis1Start().getX()+getAxis1End().getX())/2,
93
            (getAxis1Start().getY()+getAxis1End().getY())/2);
94
        double axis1Lenght = getAxis1Start().distance(getAxis1End());
95

  
96
        Point clonedAxis1Start = (Point) getAxis1Start().cloneGeometry();
97
        Point clonedAxis1End = (Point) getAxis1End().cloneGeometry();
98
        double clonedYDist = this.ydist+distance;
99

  
100
        clonedAxis1Start.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1Start().getX(), axis1Lenght/2+distance));
101
        clonedAxis1Start.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1Start().getY(), axis1Lenght/2+distance));
102

  
103
        clonedAxis1End.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1End().getX(), axis1Lenght/2+distance));
104
        clonedAxis1End.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1End().getY(), axis1Lenght/2+distance));
105

  
106
        clonedEllipse.setPoints(clonedAxis1Start, clonedAxis1End, clonedYDist);
107
        return clonedEllipse;
108
    }
109

  
79 110
}
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/primitive/curve/periellipse/PeriEllipse2D.java
23 23
package org.gvsig.fmap.geom.jts.primitive.curve.periellipse;
24 24

  
25 25
import org.gvsig.fmap.geom.Geometry;
26
import org.gvsig.fmap.geom.GeometryLocator;
27
import org.gvsig.fmap.geom.GeometryManager;
28
import org.gvsig.fmap.geom.jts.primitive.point.Point2D;
26 29
import org.gvsig.fmap.geom.jts.primitive.surface.ellipse.BaseEllipse2D;
27 30
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
28 31
import org.gvsig.fmap.geom.jts.util.JTSUtils;
32
import org.gvsig.fmap.geom.operation.GeometryOperationException;
33
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
34
import org.gvsig.fmap.geom.primitive.Ellipse;
29 35
import org.gvsig.fmap.geom.primitive.PeriEllipse;
30 36
import org.gvsig.fmap.geom.primitive.Point;
31 37

  
......
75 81
        throw new UnsupportedOperationException(message);
76 82
    }
77 83

  
84

  
85
    /* (non-Javadoc)
86
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
87
     */
88
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
89
        PeriEllipse clonedEllipse = (PeriEllipse) this.cloneGeometry();
90

  
91
        GeometryManager geomManager = GeometryLocator.getGeometryManager();
92
        Point center = new Point2D((getAxis1Start().getX()+getAxis1End().getX())/2,
93
            (getAxis1Start().getY()+getAxis1End().getY())/2);
94
        double axis1Lenght = getAxis1Start().distance(getAxis1End());
95

  
96
        Point clonedAxis1Start = (Point) getAxis1Start().cloneGeometry();
97
        Point clonedAxis1End = (Point) getAxis1End().cloneGeometry();
98
        double clonedYDist = this.ydist+distance;
99

  
100
        clonedAxis1Start.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1Start().getX(), axis1Lenght/2+distance));
101
        clonedAxis1Start.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1Start().getY(), axis1Lenght/2+distance));
102

  
103
        clonedAxis1End.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1End().getX(), axis1Lenght/2+distance));
104
        clonedAxis1End.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1End().getY(), axis1Lenght/2+distance));
105

  
106
        clonedEllipse.setPoints(clonedAxis1Start, clonedAxis1End, clonedYDist);
107
        return clonedEllipse;
108
    }
109

  
78 110
}
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/primitive/surface/ellipticarc/AbstractEllipticArc.java
29 29

  
30 30
import org.cresques.cts.ICoordTrans;
31 31

  
32
import org.gvsig.fmap.geom.Geometry;
32 33
import org.gvsig.fmap.geom.GeometryLocator;
33 34
import org.gvsig.fmap.geom.GeometryManager;
34 35
import org.gvsig.fmap.geom.jts.gputils.DefaultGeneralPathX;
......
39 40
import org.gvsig.fmap.geom.jts.util.UtilFunctions;
40 41
import org.gvsig.fmap.geom.operation.GeometryOperationException;
41 42
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
43
import org.gvsig.fmap.geom.primitive.EllipticArc;
42 44
import org.gvsig.fmap.geom.primitive.GeneralPathX;
43 45
import org.gvsig.fmap.geom.primitive.Line;
44 46
import org.gvsig.fmap.geom.primitive.Point;
......
428 430
//        throw new UnsupportedOperationException(message);
429 431
    }
430 432

  
433

  
434
    /* (non-Javadoc)
435
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
436
     */
437
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
438
        EllipticArc cloned = (EllipticArc) this.cloneGeometry();
439

  
440
        Point center = new Point2D((getAxis1Start().getX()+getAxis1End().getX())/2,
441
            (getAxis1Start().getY()+getAxis1End().getY())/2);
442
        double axis1Lenght = getAxis1Start().distance(getAxis1End());
443

  
444
        Point clonedAxis1Start = (Point) getAxis1Start().cloneGeometry();
445
        Point clonedAxis1End = (Point) getAxis1End().cloneGeometry();
446
        double clonedYDist = this.semiAxis2Length+distance;
447

  
448
        clonedAxis1Start.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1Start().getX(), axis1Lenght/2+distance));
449
        clonedAxis1Start.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1Start().getY(), axis1Lenght/2+distance));
450

  
451
        clonedAxis1End.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1End().getX(), axis1Lenght/2+distance));
452
        clonedAxis1End.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1End().getY(), axis1Lenght/2+distance));
453

  
454
        cloned.setPoints(clonedAxis1Start, clonedAxis1End, clonedYDist, this.angSt, this.angExt);
455
        return cloned;
456
    }
431 457
}
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/primitive/surface/ellipse/Ellipse2DZ.java
25 25
import java.awt.geom.AffineTransform;
26 26

  
27 27
import org.gvsig.fmap.geom.Geometry;
28
import org.gvsig.fmap.geom.GeometryLocator;
29
import org.gvsig.fmap.geom.GeometryManager;
30
import org.gvsig.fmap.geom.jts.primitive.point.Point2D;
28 31
import org.gvsig.fmap.geom.jts.primitive.point.Point3D;
29 32
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
30 33
import org.gvsig.fmap.geom.jts.util.JTSUtils;
......
104 107
    public AffineTransform getRectangleRotation() throws GeometryOperationNotSupportedException, GeometryOperationException {
105 108
        return AffineTransform.getRotateInstance(getAxis1Angle(), this.getAxis1Start().getX(), this.getAxis1Start().getY());
106 109
    }
110

  
111

  
112
    /* (non-Javadoc)
113
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
114
     */
115
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
116
        Ellipse clonedEllipse = (Ellipse) this.cloneGeometry();
117

  
118
        GeometryManager geomManager = GeometryLocator.getGeometryManager();
119
        Point axis1Start = getAxis1Start();
120
        Point center = new Point2D((axis1Start.getX()+getAxis1End().getX())/2,
121
            (axis1Start.getY()+getAxis1End().getY())/2);
122
        double axis1Lenght = getAxis1Start().distance(getAxis1End());
123

  
124
        Point clonedAxis1Start = (Point) axis1Start.cloneGeometry();
125
        Point clonedAxis1End = (Point) getAxis1End().cloneGeometry();
126
        double clonedYDist = this.ydist+distance;
127

  
128
        clonedAxis1Start.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1Start().getX(), axis1Lenght/2+distance));
129
        clonedAxis1Start.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1Start().getY(), axis1Lenght/2+distance));
130

  
131
        clonedAxis1End.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1End().getX(), axis1Lenght/2+distance));
132
        clonedAxis1End.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1End().getY(), axis1Lenght/2+distance));
133

  
134
        clonedEllipse.setPoints(clonedAxis1Start, clonedAxis1End, clonedYDist);
135
        return clonedEllipse;
136
    }
107 137
}
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/primitive/surface/ellipse/AbstractEllipse.java
28 28

  
29 29
import org.cresques.cts.ICoordTrans;
30 30

  
31
import org.gvsig.fmap.geom.Geometry;
32
import org.gvsig.fmap.geom.GeometryLocator;
33
import org.gvsig.fmap.geom.GeometryManager;
31 34
import org.gvsig.fmap.geom.jts.gputils.DefaultGeneralPathX;
32 35
import org.gvsig.fmap.geom.jts.primitive.point.Point2D;
33 36
import org.gvsig.fmap.geom.jts.primitive.point.PointJTS;
......
36 39
import org.gvsig.fmap.geom.jts.util.UtilFunctions;
37 40
import org.gvsig.fmap.geom.operation.GeometryOperationException;
38 41
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
42
import org.gvsig.fmap.geom.primitive.Ellipse;
39 43
import org.gvsig.fmap.geom.primitive.GeneralPathX;
40 44
import org.gvsig.fmap.geom.primitive.Line;
41 45
import org.gvsig.fmap.geom.primitive.Point;
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/primitive/surface/ellipse/Ellipse2D.java
25 25
import java.awt.geom.AffineTransform;
26 26

  
27 27
import org.gvsig.fmap.geom.Geometry;
28
import org.gvsig.fmap.geom.GeometryLocator;
29
import org.gvsig.fmap.geom.GeometryManager;
28 30
import org.gvsig.fmap.geom.jts.primitive.point.Point2D;
29 31
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
30 32
import org.gvsig.fmap.geom.jts.util.JTSUtils;
33
import org.gvsig.fmap.geom.jts.util.UtilFunctions;
31 34
import org.gvsig.fmap.geom.operation.GeometryOperationException;
32 35
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
33 36
import org.gvsig.fmap.geom.primitive.Ellipse;
......
104 107
        return AffineTransform.getRotateInstance(getAxis1Angle(), this.getAxis1Start().getX(), this.getAxis1Start().getY());
105 108
    }
106 109

  
110
    /* (non-Javadoc)
111
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
112
     */
113
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
114
        Ellipse clonedEllipse = (Ellipse) this.cloneGeometry();
115

  
116
        GeometryManager geomManager = GeometryLocator.getGeometryManager();
117
        Point center = new Point2D((getAxis1Start().getX()+getAxis1End().getX())/2,
118
            (getAxis1Start().getY()+getAxis1End().getY())/2);
119
        double axis1Lenght = getAxis1Start().distance(getAxis1End());
120

  
121
        Point clonedAxis1Start = (Point) getAxis1Start().cloneGeometry();
122
        Point clonedAxis1End = (Point) getAxis1End().cloneGeometry();
123
        double clonedYDist = this.ydist+distance;
124

  
125
        clonedAxis1Start.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1Start().getX(), axis1Lenght/2+distance));
126
        clonedAxis1Start.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1Start().getY(), axis1Lenght/2+distance));
127

  
128
        clonedAxis1End.setX(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getX(), getAxis1End().getX(), axis1Lenght/2+distance));
129
        clonedAxis1End.setY(JTSUtils.straightLineThroughTwoPointsEquation(0, axis1Lenght/2, center.getY(), getAxis1End().getY(), axis1Lenght/2+distance));
130

  
131
        clonedEllipse.setPoints(clonedAxis1Start, clonedAxis1End, clonedYDist);
132
        return clonedEllipse;
133
    }
107 134
}
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/primitive/surface/circle/Circle2DZ.java
28 28
import org.gvsig.fmap.geom.jts.primitive.point.PointJTS;
29 29
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
30 30
import org.gvsig.fmap.geom.jts.util.JTSUtils;
31
import org.gvsig.fmap.geom.operation.GeometryOperationException;
32
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
31 33
import org.gvsig.fmap.geom.primitive.Circle;
32 34
import org.gvsig.fmap.geom.primitive.Point;
33 35

  
......
96 98
    public double getRectangleWidth() {
97 99
        return radius*2;
98 100
    }
101

  
102

  
103
    /* (non-Javadoc)
104
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
105
     */
106
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
107
        return new Circle2DZ(((PointJTS)((PointJTS)center).cloneGeometry()), radius+distance);
108
    }
99 109
}
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/primitive/surface/circle/Circle2D.java
23 23
package org.gvsig.fmap.geom.jts.primitive.surface.circle;
24 24

  
25 25
import org.gvsig.fmap.geom.Geometry;
26
import org.gvsig.fmap.geom.jts.primitive.curve.circumference.Circumference2DZ;
26 27
import org.gvsig.fmap.geom.jts.primitive.point.Point2D;
27 28
import org.gvsig.fmap.geom.jts.primitive.point.PointJTS;
28 29
import org.gvsig.fmap.geom.jts.util.ArrayListCoordinateSequence;
29 30
import org.gvsig.fmap.geom.jts.util.JTSUtils;
31
import org.gvsig.fmap.geom.operation.GeometryOperationException;
32
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
30 33
import org.gvsig.fmap.geom.primitive.Circle;
31 34
import org.gvsig.fmap.geom.primitive.Point;
32 35

  
......
100 103
        return radius*2;
101 104
    }
102 105

  
106

  
107
    /* (non-Javadoc)
108
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
109
     */
110
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
111
        return new Circle2D(((PointJTS)((PointJTS)center).cloneGeometry()), radius+distance);
112
    }
113

  
103 114
}
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/primitive/surface/polygon/Polygon2DM.java
29 29
import java.util.List;
30 30

  
31 31
import com.vividsolutions.jts.geom.Coordinate;
32
import com.vividsolutions.jts.geom.GeometryFactory;
33
import com.vividsolutions.jts.geomgraph.Position;
34
import com.vividsolutions.jts.operation.buffer.BufferParameters;
35
import com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder;
32 36

  
33 37
import org.gvsig.fmap.geom.Geometry;
34 38
import org.gvsig.fmap.geom.GeometryException;
......
241 245
            ring.transform(at);
242 246
        }
243 247
    }
248

  
249

  
250
    /* (non-Javadoc)
251
    * @see org.gvsig.fmap.geom.Geometry#offset(double)
252
    */
253
      public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
254
          return JTSUtils.createGeometry(getJTS().buffer(distance));
255
      }
244 256
}
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/primitive/surface/polygon/Polygon3DM.java
29 29
import java.util.List;
30 30

  
31 31
import com.vividsolutions.jts.geom.Coordinate;
32
import com.vividsolutions.jts.geom.GeometryFactory;
33
import com.vividsolutions.jts.geomgraph.Position;
34
import com.vividsolutions.jts.operation.buffer.BufferParameters;
35
import com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder;
32 36

  
33 37
import org.gvsig.fmap.geom.Geometry;
34 38
import org.gvsig.fmap.geom.GeometryException;
......
247 251
            ring.transform(at);
248 252
        }
249 253
    }
254

  
255

  
256
    /* (non-Javadoc)
257
    * @see org.gvsig.fmap.geom.Geometry#offset(double)
258
    */
259
      public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
260
          return JTSUtils.createGeometry(getJTS().buffer(distance));
261
      }
250 262
}
251 263

  
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/primitive/surface/polygon/Polygon2D.java
29 29
import java.util.List;
30 30

  
31 31
import com.vividsolutions.jts.geom.Coordinate;
32
import com.vividsolutions.jts.geom.GeometryFactory;
33
import com.vividsolutions.jts.geomgraph.Position;
34
import com.vividsolutions.jts.operation.buffer.BufferParameters;
35
import com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder;
32 36

  
33 37
import org.gvsig.fmap.geom.Geometry;
34 38
import org.gvsig.fmap.geom.GeometryException;
......
259 263
            ring.transform(at);
260 264
        }
261 265
    }
266

  
267
  /* (non-Javadoc)
268
  * @see org.gvsig.fmap.geom.Geometry#offset(double)
269
  */
270
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
271
        return JTSUtils.createGeometry(getJTS().buffer(distance));
272
    }
262 273
}
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/primitive/surface/polygon/Polygon3D.java
29 29
import java.util.List;
30 30

  
31 31
import com.vividsolutions.jts.geom.Coordinate;
32
import com.vividsolutions.jts.geom.GeometryFactory;
33
import com.vividsolutions.jts.geomgraph.Position;
34
import com.vividsolutions.jts.operation.buffer.BufferParameters;
35
import com.vividsolutions.jts.operation.buffer.OffsetCurveBuilder;
32 36

  
33 37
import org.gvsig.fmap.geom.Geometry;
34 38
import org.gvsig.fmap.geom.GeometryException;
......
238 242
            ring.transform(at);
239 243
        }
240 244
    }
245

  
246

  
247
    /* (non-Javadoc)
248
    * @see org.gvsig.fmap.geom.Geometry#offset(double)
249
    */
250
      public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
251
          return JTSUtils.createGeometry(getJTS().buffer(distance));
252
      }
241 253
}
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/primitive/surface/filledspline/FilledSpline2D.java
27 27
import org.gvsig.fmap.geom.Geometry;
28 28
import org.gvsig.fmap.geom.jts.primitive.curve.spline.BaseSpline2D;
29 29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.operation.GeometryOperationException;
31
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
30 32
import org.gvsig.fmap.geom.primitive.FilledSpline;
31 33
import org.gvsig.fmap.geom.primitive.Line;
32 34
import org.gvsig.fmap.geom.primitive.Polygon;
......
144 146
    public com.vividsolutions.jts.geom.Geometry getJTS() {
145 147
        return JTSUtils.createJTSPolygon(getSplineCoordinates());
146 148
    }
149

  
150
    /* (non-Javadoc)
151
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
152
     */
153
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
154
        return JTSUtils.createGeometry(getJTS().buffer(distance));
155
    }
147 156
}
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/primitive/surface/filledspline/FilledSpline3D.java
27 27
import org.gvsig.fmap.geom.Geometry;
28 28
import org.gvsig.fmap.geom.jts.primitive.curve.spline.BaseSpline3D;
29 29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.operation.GeometryOperationException;
31
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
30 32
import org.gvsig.fmap.geom.primitive.FilledSpline;
31 33
import org.gvsig.fmap.geom.primitive.Line;
32 34
import org.gvsig.fmap.geom.primitive.Polygon;
......
144 146
    public com.vividsolutions.jts.geom.Geometry getJTS() {
145 147
        return JTSUtils.createJTSPolygon(getSplineCoordinates());
146 148
    }
149

  
150

  
151
    /* (non-Javadoc)
152
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
153
     */
154
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
155
        return JTSUtils.createGeometry(getJTS().buffer(distance));
156
    }
147 157
}
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/primitive/surface/filledspline/FilledSpline2DM.java
27 27
import org.gvsig.fmap.geom.Geometry;
28 28
import org.gvsig.fmap.geom.jts.primitive.curve.spline.BaseSpline2DM;
29 29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.operation.GeometryOperationException;
31
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
30 32
import org.gvsig.fmap.geom.primitive.FilledSpline;
31 33
import org.gvsig.fmap.geom.primitive.Line;
32 34
import org.gvsig.fmap.geom.primitive.Polygon;
......
144 146
    public com.vividsolutions.jts.geom.Geometry getJTS() {
145 147
        return JTSUtils.createJTSPolygon(getSplineCoordinates());
146 148
    }
149

  
150

  
151
    /* (non-Javadoc)
152
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
153
     */
154
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
155
        return JTSUtils.createGeometry(getJTS().buffer(distance));
156
    }
147 157
}
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/primitive/surface/filledspline/FilledSpline3DM.java
27 27
import org.gvsig.fmap.geom.Geometry;
28 28
import org.gvsig.fmap.geom.jts.primitive.curve.spline.BaseSpline3DM;
29 29
import org.gvsig.fmap.geom.jts.util.JTSUtils;
30
import org.gvsig.fmap.geom.operation.GeometryOperationException;
31
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
30 32
import org.gvsig.fmap.geom.primitive.FilledSpline;
31 33
import org.gvsig.fmap.geom.primitive.Line;
32 34
import org.gvsig.fmap.geom.primitive.Polygon;
......
144 146
    public com.vividsolutions.jts.geom.Geometry getJTS() {
145 147
        return JTSUtils.createJTSPolygon(getSplineCoordinates());
146 148
    }
149

  
150

  
151
    /* (non-Javadoc)
152
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
153
     */
154
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
155
        return JTSUtils.createGeometry(getJTS().buffer(distance));
156
    }
147 157
}
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/primitive/point/Point2DM.java
37 37
import org.gvsig.fmap.geom.jts.gputils.DefaultGeneralPathX;
38 38
import org.gvsig.fmap.geom.jts.gputils.GeneralPathXIterator;
39 39
import org.gvsig.fmap.geom.jts.util.JTSUtils;
40
import org.gvsig.fmap.geom.operation.GeometryOperationException;
41
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
40 42
import org.gvsig.fmap.geom.primitive.GeneralPathX;
41 43
import org.gvsig.fmap.geom.type.GeometryType;
42 44

  
......
248 250
        return multiPoint;
249 251
    }
250 252

  
253
    /* (non-Javadoc)
254
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
255
     */
256
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
257
        return JTSUtils.createGeometry(getJTS().buffer(distance));
258
    }
259

  
251 260
}
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/primitive/point/Point3DM.java
36 36
import org.gvsig.fmap.geom.jts.gputils.DefaultGeneralPathX;
37 37
import org.gvsig.fmap.geom.jts.gputils.GeneralPathXIterator;
38 38
import org.gvsig.fmap.geom.jts.util.JTSUtils;
39
import org.gvsig.fmap.geom.operation.GeometryOperationException;
40
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
39 41
import org.gvsig.fmap.geom.primitive.GeneralPathX;
40 42
import org.gvsig.fmap.geom.type.GeometryType;
41 43

  
......
239 241
        multiPoint.addPoint(this);
240 242
        return multiPoint;
241 243
    }
244

  
245
    /* (non-Javadoc)
246
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
247
     */
248
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
249
        return JTSUtils.createGeometry(getJTS().buffer(distance));
250
    }
242 251
}
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/primitive/point/Point2D.java
34 34
import org.gvsig.fmap.geom.jts.aggregate.MultiPoint2D;
35 35
import org.gvsig.fmap.geom.jts.gputils.DefaultGeneralPathX;
36 36
import org.gvsig.fmap.geom.jts.gputils.GeneralPathXIterator;
37
import org.gvsig.fmap.geom.jts.primitive.curve.circumference.Circumference2D;
37 38
import org.gvsig.fmap.geom.operation.GeometryOperationException;
38 39
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
39 40
import org.gvsig.fmap.geom.primitive.GeneralPathX;
41
import org.gvsig.fmap.geom.primitive.Point;
40 42
import org.gvsig.fmap.geom.type.GeometryType;
41 43

  
42 44
/**
......
219 221
        return multiPoint;
220 222
    }
221 223

  
224
    /* (non-Javadoc)
225
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
226
     */
227
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
228
        return new Circumference2D((Point)this.cloneGeometry(), distance);
229
    }
230

  
222 231
}
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/primitive/point/Point3D.java
34 34
import org.gvsig.fmap.geom.jts.aggregate.MultiPoint3D;
35 35
import org.gvsig.fmap.geom.jts.gputils.DefaultGeneralPathX;
36 36
import org.gvsig.fmap.geom.jts.gputils.GeneralPathXIterator;
37
import org.gvsig.fmap.geom.jts.primitive.curve.circumference.Circumference2D;
38
import org.gvsig.fmap.geom.jts.primitive.curve.circumference.Circumference2DZ;
39
import org.gvsig.fmap.geom.operation.GeometryOperationException;
40
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
37 41
import org.gvsig.fmap.geom.primitive.GeneralPathX;
42
import org.gvsig.fmap.geom.primitive.Point;
38 43
import org.gvsig.fmap.geom.type.GeometryType;
39 44

  
40 45

  
......
223 228
        return multiPoint;
224 229
    }
225 230

  
231
    /* (non-Javadoc)
232
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
233
     */
234
    public Geometry offset(double distance) throws GeometryOperationNotSupportedException, GeometryOperationException {
235
        return new Circumference2DZ((Point)this.cloneGeometry(), distance);
236
    }
237

  
226 238
}
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/primitive/DefaultNullGeometry.java
249 249
        // do nothing
250 250
    }
251 251

  
252
    /* (non-Javadoc)
253
     * @see org.gvsig.fmap.geom.Geometry#offset(double)
254
     */
255
    public org.gvsig.fmap.geom.Geometry offset(double distance) throws GeometryOperationNotSupportedException,
256
        GeometryOperationException {
257
        //FIXME: ?this, null o qu??
258
        return this;
259
    }
260

  
252 261
}
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/OpenJUMPUtils.java
1
/* gvSIG. Desktop Geographic Information System.
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff