Statistics
| Revision:

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

History | View | Annotate | Download (2.55 KB)

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

    
3
import org.cresques.cts.ICoordTrans;
4
import org.cresques.cts.IProjection;
5
import org.gvsig.fmap.crs.CRSFactory;
6
import org.gvsig.fmap.dal.feature.Feature;
7
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
8
import org.gvsig.fmap.dal.feature.FeatureType;
9
import org.gvsig.fmap.geom.Geometry;
10
import org.gvsig.fmap.geom.operation.relationship.DefaultRelationshipGeometryOperationContext;
11
import org.gvsig.fmap.geom.operation.relationship.Disjoint;
12
import org.gvsig.fmap.geom.operation.relationship.Equals;
13
import org.gvsig.fmap.geom.operation.relationship.Intersects;
14
import org.gvsig.tools.evaluator.AbstractEvaluator;
15
import org.gvsig.tools.evaluator.EvaluatorData;
16
import org.gvsig.tools.evaluator.EvaluatorException;
17
/**
18
 *
19
 * @author Vicente Caballero Navarro
20
 *
21
 */
22
public class DisjointGeometryEvaluator extends AbstractEvaluator {
23

    
24
        private String geomName;
25
        private Geometry geometry;
26
        private Geometry geometryTrans;
27
        private String srs;
28
        private boolean isDefault;
29

    
30
        public DisjointGeometryEvaluator(Geometry geometry,
31
                        IProjection envelopeProjection, FeatureType featureType,
32
                        String geomName) {
33
                FeatureAttributeDescriptor fad = (FeatureAttributeDescriptor) featureType
34
                                .get(geomName);
35
                this.isDefault = featureType.getDefaultGeometryAttributeName().equals(
36
                                geomName);
37
                this.geometry = geometry;
38
                this.geometryTrans = geometry.cloneGeometry();
39
                this.srs = envelopeProjection.getAbrev();
40
                ICoordTrans ct = envelopeProjection.getCT(CRSFactory.getCRS(fad
41
                                .getSRS()));
42
                if (ct != null) {
43
                        geometryTrans.reProject(ct);
44
                }
45
                this.geomName = geomName;
46

    
47
                this.getFieldsInfo().addMatchFieldValue(geomName, geometryTrans);
48

    
49
        }
50

    
51
        public Object evaluate(EvaluatorData data) throws EvaluatorException {
52
                try {
53
                        DefaultRelationshipGeometryOperationContext context;
54
                        if (isDefault) {
55
                                Feature feature = (Feature) data.getContextValue("feature");
56
                                context =new DefaultRelationshipGeometryOperationContext(feature
57
                                                .getDefaultGeometry());
58

    
59
                        } else {
60
                                Geometry geom = (Geometry) data.getDataValue(geomName);
61

    
62
                                context = new DefaultRelationshipGeometryOperationContext(geom);
63
                        }
64
                        return geometryTrans.invokeOperation(Disjoint.CODE, context);
65

    
66
                } catch (Exception e) {
67
                        throw new EvaluatorException(e);
68
                }
69
        }
70

    
71
        public String getName() {
72
                return "disjoint with geometry";
73
        }
74

    
75
        public String getCQL() {
76
                return " disjoint(GeomFromText('" + geometry.toString() + "', " + "'"
77
                                + srs + "'" + "), " + geomName + ") ";
78
        }
79

    
80
}