Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libFMap_mapcontext / src / org / gvsig / fmap / mapcontext / layers / vectorial / InEnvelopeEvaluator.java @ 26778

History | View | Annotate | Download (3.01 KB)

1
package org.gvsig.fmap.mapcontext.layers.vectorial;
2

    
3
import org.cresques.cts.IProjection;
4
import org.gvsig.fmap.dal.feature.Feature;
5
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
6
import org.gvsig.fmap.dal.feature.FeatureType;
7
import org.gvsig.fmap.geom.Geometry;
8
import org.gvsig.fmap.geom.primitive.Envelope;
9
import org.gvsig.tools.evaluator.AbstractEvaluator;
10
import org.gvsig.tools.evaluator.EvaluatorData;
11
import org.gvsig.tools.evaluator.EvaluatorException;
12

    
13
public class InEnvelopeEvaluator extends AbstractEvaluator {
14

    
15
        private Envelope envelope;
16
        private String geomName;
17
        private Envelope envelopeTrans;
18
        private boolean isDefault;
19
        private String srs;
20

    
21
        public InEnvelopeEvaluator(Envelope envelope,
22
                        IProjection envelopeProjection, FeatureType featureType,
23
                        String geomName) {
24
                FeatureAttributeDescriptor fad = (FeatureAttributeDescriptor) featureType
25
                                .get(geomName);
26

    
27
                this.isDefault = featureType.getDefaultGeometryAttributeName().equals(
28
                                geomName);
29
                this.envelope = envelope;
30
                // this.srs = envelopeProjection.getAbrev();
31
                // this.projection=CRSFactory.getCRS(fad.getSRS());
32
                // this.envelopeProjection=envelopeProjection;
33
//                ICoordTrans ct = null;
34
//                if (!this.srs.equals(fad.getSRS())) { // FIXME comparaci?n
35
//                        ct = envelopeProjection.getCT(fad.getSRS());
36
//                }
37
//                if (ct != null) {
38
//                        this.envelopeTrans = envelope.convert(ct);
39
//                } else {
40
                        this.envelopeTrans = envelope;
41
//                }
42
//                this.geomName = geomName;
43

    
44
                this.getFieldsInfo().addMatchFieldValue(geomName, envelopeTrans);
45

    
46
        }
47

    
48
        public Object evaluate(EvaluatorData data) throws EvaluatorException {
49
                if (isDefault) {
50
                        Feature feature = (Feature) data.getContextValue("feature");
51
                        //                        return new Boolean(envelopeTrans.contains(feature
52
                        //                                        .getDefaultEnvelope())
53
                        //                                        || envelopeTrans.intersects(feature.getDefaultEnvelope()));
54
                        System.out.println("== Filter[" + envelopeTrans.getLowerCorner()[0]
55
                                        + "," + envelopeTrans.getLowerCorner()[1] + "] ["
56
                                        + envelopeTrans.getUpperCorner()[0] + ","
57
                                        + envelopeTrans.getUpperCorner()[1] + "]");
58

    
59
                        Envelope featureEnvelope = feature.getDefaultEnvelope();
60
                        System.out.println("== Geom ["
61
                                        + featureEnvelope.getLowerCorner()[0]
62
                                        + "," + featureEnvelope.getLowerCorner()[1] + "] ["
63
                                        + featureEnvelope.getUpperCorner()[0] + ","
64
                                        + featureEnvelope.getUpperCorner()[1] + "]");
65
                        Boolean r = new Boolean(envelopeTrans.intersects(featureEnvelope));
66
                        System.out.println("==3 "+r);
67
                        return r;
68

    
69
                } else {
70
                        Geometry geom = (Geometry) data.getDataValue(geomName);
71
                        //                        return new Boolean(envelopeTrans.contains(geom.getEnvelope())
72
                        //                                        || envelopeTrans.intersects(geom.getEnvelope()));
73

    
74
                        return new Boolean(envelopeTrans.intersects(geom.getEnvelope()));
75

    
76
                }
77
        }
78

    
79
        public String getName() {
80
                return "contains in envelope";
81
        }
82

    
83
        public String getCQL() {
84
                return " intersects(GeomFromText('" + envelope.toString() + "', " + "'"
85
                                + srs + "'" + "), boundary(" + geomName + ")) ";
86
        }
87

    
88
}