Revision 5451

View differences:

org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/DefaultVectorialROI.java
1
package org.gvsig.raster.lib.buffer.impl;
2

  
3
import java.util.ArrayList;
4
import java.util.List;
5

  
6
import org.gvsig.fmap.geom.Geometry;
7
import org.gvsig.fmap.geom.GeometryLocator;
8
import org.gvsig.fmap.geom.GeometryManager;
9
import org.gvsig.fmap.geom.exception.CreateGeometryException;
10
import org.gvsig.fmap.geom.operation.GeometryOperationException;
11
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
12
import org.gvsig.fmap.geom.primitive.Envelope;
13
import org.gvsig.fmap.geom.primitive.Point;
14
import org.gvsig.raster.lib.buffer.api.exceptions.GettingEnvelopeException;
15

  
16
public class DefaultVectorialROI extends AbstractROI{
17

  
18

  
19
    List<Geometry> rois;
20

  
21
    public DefaultVectorialROI(){
22
        this.rois=new ArrayList<Geometry>();
23
    }
24

  
25
    @Override
26
    public boolean isInside(int cellX, int cellY) throws CreateGeometryException, GeometryOperationNotSupportedException, GeometryOperationException {
27
        GeometryManager geomManager=GeometryLocator.getGeometryManager();
28
        Point point = geomManager.createPoint(cellX, cellY,Geometry.SUBTYPES.GEOM2D);
29
        //TODO: convertir este punto a coordenadas desde p?xeles
30
        return isInside(point);
31

  
32
    }
33

  
34
    @Override
35
    public boolean isInside(Geometry geometry) throws GeometryOperationNotSupportedException, GeometryOperationException {
36
        if (rois!=null && !rois.isEmpty()){
37
            for (Geometry geom:rois){
38
                if( geom.contains(geometry) ){
39
                    return true;
40
                }
41
            }
42
        }
43
        return false;
44
    }
45

  
46
    @Override
47
    public Envelope getEnvelope() throws GettingEnvelopeException {
48
        GeometryManager geomManager=GeometryLocator.getGeometryManager();
49
        Envelope envelope=null;
50
        for (Geometry geom:rois){
51
            try {
52
                if( envelope==null ) {
53
                    envelope=(Envelope) geom.getEnvelope().clone();
54
                } else {
55
                    envelope.add((Envelope)geom.getEnvelope().clone());
56
                }
57
            } catch (CloneNotSupportedException e) {
58
                throw new GettingEnvelopeException(geom, e);
59
            }
60
        }
61
        return envelope;
62
    }
63

  
64
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractROI.java
1
package org.gvsig.raster.lib.buffer.impl;
2

  
3
import java.util.ArrayList;
4
import java.util.List;
5

  
6
import org.gvsig.raster.lib.buffer.api.ROI;
7
import org.gvsig.tools.observer.impl.BaseWeakReferencingObservable;
8

  
9
public abstract class AbstractROI extends BaseWeakReferencingObservable implements ROI{
10

  
11
    String name;
12
    long id;
13
    private List obs = new ArrayList();
14

  
15
    @Override
16
    public String getName() {
17
        return this.name;
18
    }
19

  
20
    @Override
21
    public void setName(String name) {
22
        this.name=name;
23
    }
24

  
25
    @Override
26
    public long getID() {
27
        return id;
28
    }
29

  
30
    @Override
31
    public void setID(long id) {
32
        this.id=id;
33
    }
34

  
35
// TODO: Averiguar si el extender de BaseWeakReferencingObservable es correcto
36
//    @Override
37
//    public void addObserver(Observer o) {
38
//        // TODO Auto-generated method stub
39
//
40
//    }
41
//
42
//    @Override
43
//    public void deleteObserver(Observer o) {
44
//        // TODO Auto-generated method stub
45
//
46
//    }
47
//
48
//    @Override
49
//    public void deleteObservers() {
50
//        // TODO Auto-generated method stub
51
//
52
//    }
53
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.api/src/main/java/org/gvsig/raster/lib/buffer/api/exceptions/GettingEnvelopeException.java
1
package org.gvsig.raster.lib.buffer.api.exceptions;
2

  
3
import java.io.File;
4

  
5
import org.gvsig.fmap.geom.Geometry;
6
import org.gvsig.tools.exception.BaseException;
7

  
8
public class GettingEnvelopeException extends BaseException{
9
    /**
10
     *
11
     */
12
    private static final long serialVersionUID = 6157993872314929027L;
13

  
14
    public GettingEnvelopeException(Throwable cause) {
15
        super("Can't get envelope",cause,"cant_get_envelope",serialVersionUID);
16
    }
17

  
18
    public GettingEnvelopeException(Geometry geom, Throwable cause) {
19
        super("Can't get envelope from geometry %(geometry)",cause,"cant_get_envelope_from_XgeometryX",serialVersionUID);
20
        setValue("geometry",geom);
21
    }
22
}
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.api/src/main/java/org/gvsig/raster/lib/buffer/api/ROI.java
23 23
package org.gvsig.raster.lib.buffer.api;
24 24

  
25 25
import org.gvsig.fmap.geom.Geometry;
26
import org.gvsig.fmap.geom.exception.CreateGeometryException;
27
import org.gvsig.fmap.geom.operation.GeometryOperationException;
28
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
26 29
import org.gvsig.fmap.geom.primitive.Envelope;
30
import org.gvsig.raster.lib.buffer.api.exceptions.GettingEnvelopeException;
27 31
import org.gvsig.tools.observer.Observable;
28 32

  
29 33

  
......
37 41

  
38 42
    /**
39 43
     * Checks if a point in pixel coordinates is inside of this region of interest
40
     * @param cellX
41
     * @param cellY
44
     * @param x
45
     * @param y
42 46
     * @return true whether the point is inside
47
     * @throws CreateGeometryException
48
     * @throws GeometryOperationException
49
     * @throws GeometryOperationNotSupportedException
43 50
     */
44
    public boolean isInside(int cellX, int cellY);
51
    public boolean isInside(int cellX, int cellY) throws CreateGeometryException, GeometryOperationNotSupportedException, GeometryOperationException;
45 52

  
46 53
    /**
47 54
     * Checks if the geometry is inside of this region of interest
48
     * @param geometry
49 55
     * @return true whether the point is inside
56
     * @throws GeometryOperationException
57
     * @throws GeometryOperationNotSupportedException
50 58
     */
51
    public boolean isInside(Geometry geometry);
59
    public boolean isInside(Geometry geometry) throws GeometryOperationNotSupportedException, GeometryOperationException;
52 60

  
53 61
    /**
54 62
     * Gets the bounding box of this ROI
55 63
     *
56 64
     * @return the envelope
65
     * @throws GettingEnvelopeException
66
     * @throws CloneNotSupportedException
57 67
     */
58
    public Envelope getEnvelope();
68
    public Envelope getEnvelope() throws GettingEnvelopeException;
59 69

  
60 70
    /**
61 71
     * @return the name

Also available in: Unified diff