Revision 5491 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
DefaultVectorialROI.java | ||
---|---|---|
11 | 11 |
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException; |
12 | 12 |
import org.gvsig.fmap.geom.primitive.Envelope; |
13 | 13 |
import org.gvsig.fmap.geom.primitive.Point; |
14 |
import org.gvsig.raster.lib.buffer.api.VectorialROI; |
|
14 | 15 |
import org.gvsig.raster.lib.buffer.api.exceptions.GettingEnvelopeException; |
15 | 16 |
|
16 |
public class DefaultVectorialROI extends AbstractROI{ |
|
17 |
/** |
|
18 |
* @author <a href="mailto:lmarques@disid.com">Lluis Marques</a> |
|
19 |
* |
|
20 |
*/ |
|
21 |
public class DefaultVectorialROI extends AbstractROI implements VectorialROI { |
|
17 | 22 |
|
18 |
|
|
19 | 23 |
List<Geometry> rois; |
20 | 24 |
|
21 |
public DefaultVectorialROI(){ |
|
22 |
this.rois=new ArrayList<Geometry>(); |
|
25 |
/** |
|
26 |
* Default constructor |
|
27 |
*/ |
|
28 |
public DefaultVectorialROI() { |
|
29 |
this.rois = new ArrayList<Geometry>(); |
|
23 | 30 |
} |
24 | 31 |
|
25 | 32 |
@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 |
|
33 |
public boolean isInside(int cellX, int cellY) throws CreateGeometryException, |
|
34 |
GeometryOperationNotSupportedException, GeometryOperationException { |
|
35 |
GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
|
36 |
Point point = geomManager.createPoint(cellX, cellY, Geometry.SUBTYPES.GEOM2D); |
|
37 |
// TODO: convertir este punto a coordenadas desde p?xeles |
|
30 | 38 |
return isInside(point); |
31 | 39 |
|
32 | 40 |
} |
33 | 41 |
|
34 | 42 |
@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) ){ |
|
43 |
public boolean isInside(Geometry geometry) throws GeometryOperationNotSupportedException, |
|
44 |
GeometryOperationException { |
|
45 |
if (rois != null && !rois.isEmpty()) { |
|
46 |
for (Geometry geom : rois) { |
|
47 |
if (geom.contains(geometry)) { |
|
39 | 48 |
return true; |
40 | 49 |
} |
41 | 50 |
} |
... | ... | |
45 | 54 |
|
46 | 55 |
@Override |
47 | 56 |
public Envelope getEnvelope() throws GettingEnvelopeException { |
48 |
GeometryManager geomManager=GeometryLocator.getGeometryManager(); |
|
49 |
Envelope envelope=null; |
|
50 |
for (Geometry geom:rois){ |
|
57 |
Envelope envelope = null; |
|
58 |
for (Geometry geom : rois) { |
|
51 | 59 |
try { |
52 |
if( envelope==null ) {
|
|
53 |
envelope=(Envelope) geom.getEnvelope().clone();
|
|
60 |
if (envelope == null) {
|
|
61 |
envelope = (Envelope) geom.getEnvelope().clone();
|
|
54 | 62 |
} else { |
55 |
envelope.add((Envelope)geom.getEnvelope().clone()); |
|
63 |
envelope.add((Envelope) geom.getEnvelope().clone());
|
|
56 | 64 |
} |
57 | 65 |
} catch (CloneNotSupportedException e) { |
58 | 66 |
throw new GettingEnvelopeException(geom, e); |
... | ... | |
61 | 69 |
return envelope; |
62 | 70 |
} |
63 | 71 |
|
72 |
@Override |
|
73 |
public void addGeometry(Geometry geometry) { |
|
74 |
this.rois.add(geometry); |
|
75 |
} |
|
76 |
|
|
77 |
@Override |
|
78 |
public void removeGeometry(int index) { |
|
79 |
this.rois.remove(index); |
|
80 |
} |
|
81 |
|
|
82 |
@Override |
|
83 |
public List<Geometry> getGeometries() { |
|
84 |
return this.rois; |
|
85 |
} |
|
86 |
|
|
87 |
@Override |
|
88 |
public int getGeometryCount() { |
|
89 |
return this.rois.size(); |
|
90 |
} |
|
91 |
|
|
64 | 92 |
} |
Also available in: Unified diff