Revision 1034 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/operations/strategies/QueryByPointVisitor.java
QueryByPointVisitor.java | ||
---|---|---|
1 |
/* Generated by Together */ |
|
2 | 1 |
package com.iver.cit.gvsig.fmap.operations.strategies; |
3 | 2 |
|
4 |
import java.awt.geom.Point2D; |
|
5 |
import java.awt.geom.Rectangle2D; |
|
6 |
|
|
7 |
import org.cresques.cts.ICoordTrans; |
|
8 |
|
|
9 | 3 |
import com.iver.cit.gvsig.fmap.core.IGeometry; |
10 | 4 |
import com.iver.cit.gvsig.fmap.layers.FBitSet; |
11 | 5 |
import com.iver.cit.gvsig.fmap.layers.FLayer; |
12 | 6 |
|
7 |
import org.cresques.cts.ICoordTrans; |
|
13 | 8 |
|
9 |
import java.awt.geom.Point2D; |
|
10 |
import java.awt.geom.Rectangle2D; |
|
11 |
|
|
12 |
|
|
14 | 13 |
/** |
15 | 14 |
* Query by point Visitor. |
16 | 15 |
* |
17 | 16 |
* @author Vicente Caballero Navarro |
18 |
* |
|
19 | 17 |
*/ |
20 | 18 |
public class QueryByPointVisitor implements FeatureVisitor { |
21 |
private Point2D point = null;
|
|
22 |
private double tolerance;
|
|
23 |
private FLayer layer=null;
|
|
24 |
private FBitSet bitset=null;
|
|
25 |
private Rectangle2D recPoint=null;
|
|
19 |
private Point2D point = null;
|
|
20 |
private double tolerance;
|
|
21 |
private FLayer layer = null;
|
|
22 |
private FBitSet bitset = null;
|
|
23 |
private Rectangle2D recPoint = null;
|
|
26 | 24 |
private ICoordTrans ct = null; |
27 | 25 |
|
28 |
/** |
|
29 |
* DOCUMENT ME! |
|
30 |
* |
|
31 |
* @return DOCUMENT ME! |
|
32 |
*/ |
|
33 |
public FBitSet getBitSet() { |
|
34 |
return bitset; |
|
35 |
} |
|
36 |
public void setLayer(FLayer layer){ |
|
37 |
this.layer=layer; |
|
38 |
this.ct = layer.getCoordTrans(); |
|
39 |
} |
|
40 |
/** |
|
41 |
* DOCUMENT ME! |
|
42 |
* |
|
43 |
* @param t DOCUMENT ME! |
|
44 |
*/ |
|
45 |
public void setTolerance(double t) { |
|
46 |
tolerance = t; |
|
47 |
} |
|
26 |
/** |
|
27 |
* Devuelve un FBitSet con los ?ndices de los registros de la consulta. |
|
28 |
* |
|
29 |
* @return FBitSet con los ?ndices de la consulta. |
|
30 |
*/ |
|
31 |
public FBitSet getBitSet() { |
|
32 |
return bitset; |
|
33 |
} |
|
48 | 34 |
|
49 |
/** |
|
50 |
* DOCUMENT ME! |
|
51 |
* |
|
52 |
* @param p DOCUMENT ME! |
|
53 |
*/ |
|
54 |
public void setQueriedPoint(Point2D p) { |
|
55 |
point = p; |
|
56 |
} |
|
35 |
/** |
|
36 |
* DOCUMENT ME! |
|
37 |
* |
|
38 |
* @param layer DOCUMENT ME! |
|
39 |
*/ |
|
40 |
public void setLayer(FLayer layer) { |
|
41 |
this.layer = layer; |
|
42 |
this.ct = layer.getCoordTrans(); |
|
43 |
} |
|
57 | 44 |
|
58 |
/** |
|
59 |
* @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#visit(com.iver.cit.gvsig.fmap.core.IGeometry, |
|
60 |
* int) |
|
61 |
*/ |
|
62 |
public void visit(IGeometry g, int index) { |
|
45 |
/** |
|
46 |
* Inserta la tolerancia que se aplica en la selecci?n. |
|
47 |
* |
|
48 |
* @param t tolerancia. |
|
49 |
*/ |
|
50 |
public void setTolerance(double t) { |
|
51 |
tolerance = t; |
|
52 |
} |
|
63 | 53 |
|
64 |
if (ct != null) |
|
65 |
{ |
|
66 |
g.reProject(ct); |
|
67 |
} |
|
68 |
|
|
69 |
if (g.intersects(recPoint)) { |
|
70 |
bitset.set(index, true); |
|
71 |
} else { |
|
72 |
bitset.set(index, false); |
|
73 |
} |
|
74 |
} |
|
54 |
/** |
|
55 |
* Inserta el punto de consulta. |
|
56 |
* |
|
57 |
* @param p punto de consulta. |
|
58 |
*/ |
|
59 |
public void setQueriedPoint(Point2D p) { |
|
60 |
point = p; |
|
61 |
} |
|
75 | 62 |
|
76 |
/** |
|
77 |
* @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#stop() |
|
78 |
*/ |
|
79 |
public void stop(FLayer layer) { |
|
80 |
} |
|
63 |
/** |
|
64 |
* @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#visit(com.iver.cit.gvsig.fmap.core.IGeometry, |
|
65 |
* int) |
|
66 |
*/ |
|
67 |
public void visit(IGeometry g, int index) { |
|
68 |
if (ct != null) { |
|
69 |
g.reProject(ct); |
|
70 |
} |
|
81 | 71 |
|
82 |
/** |
|
83 |
* @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#start() |
|
84 |
*/ |
|
85 |
public boolean start(FLayer layer) { |
|
86 |
bitset = new FBitSet(); |
|
87 |
recPoint = new Rectangle2D.Double(point.getX() - |
|
88 |
(tolerance / 2), point.getY() - (tolerance / 2), tolerance, |
|
89 |
tolerance); |
|
90 |
|
|
91 |
return true; |
|
92 |
} |
|
72 |
if (g.intersects(recPoint)) { |
|
73 |
bitset.set(index, true); |
|
74 |
} else { |
|
75 |
bitset.set(index, false); |
|
76 |
} |
|
77 |
} |
|
78 |
|
|
79 |
/** |
|
80 |
* @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#stop() |
|
81 |
*/ |
|
82 |
public void stop(FLayer layer) { |
|
83 |
} |
|
84 |
|
|
85 |
/** |
|
86 |
* @see com.iver.cit.gvsig.fmap.operations.strategies.FeatureVisitor#start() |
|
87 |
*/ |
|
88 |
public boolean start(FLayer layer) { |
|
89 |
bitset = new FBitSet(); |
|
90 |
recPoint = new Rectangle2D.Double(point.getX() - (tolerance / 2), |
|
91 |
point.getY() - (tolerance / 2), tolerance, tolerance); |
|
92 |
|
|
93 |
return true; |
|
94 |
} |
|
93 | 95 |
} |
Also available in: Unified diff