Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_data / src / org / gvsig / fmap / data / feature / rule / FeatureRulePolygon.java @ 22961

History | View | Annotate | Download (2.53 KB)

1
package org.gvsig.fmap.data.feature.rule;
2

    
3
import org.gvsig.fmap.data.feature.AbstractFeatureRule;
4
import org.gvsig.fmap.data.feature.Feature;
5
import org.gvsig.fmap.data.feature.FeatureRule;
6
import org.gvsig.fmap.data.feature.FeatureStore;
7
import org.gvsig.fmap.data.feature.IsNotFeatureSettingException;
8
import org.gvsig.fmap.geom.Geometry;
9
import org.gvsig.fmap.geom.GeometryFactory;
10
import org.gvsig.fmap.geom.GeometryManager;
11
import org.gvsig.fmap.geom.primitive.Curve2D;
12
import org.gvsig.fmap.geom.primitive.GeneralPathX;
13
import org.gvsig.fmap.geom.util.Converter;
14

    
15
public class FeatureRulePolygon extends AbstractFeatureRule {
16

    
17
        public FeatureRulePolygon(String name, String description) {
18
                super(name, description);
19
        }
20

    
21
        public void validate(Feature feature, FeatureStore featureStore) {
22
                Geometry geom = (Geometry)feature.getDefaultGeometry();
23
                GeometryFactory geomFactory=GeometryManager.getInstance().getGeometryFactory();
24
//        if ((geom.getInternalShape() instanceof FCircle2D)
25
//                        || (geom.getInternalShape() instanceof FEllipse2D)) {
26
//                return true;
27
//        }
28
        GeneralPathX gp = new GeneralPathX();
29
        gp.append(geom.getPathIterator(null, Converter.FLATNESS), true);
30

    
31
        if (gp.isClosed())
32
        {
33
                boolean bCCW =gp.isCCW();
34
                System.out.println("Counter ClockWise  = " + bCCW);
35
                if (bCCW)
36
                {
37
//                         gp.ensureOrientation(false);
38
                        gp.flip();
39
//                    IGeometry aux = ShapeFactory.createPolygon2D(gp);
40
//                    Geometry jtsGeom = aux.toJTSGeometry();
41
//                    geom = FConverter.jts_to_igeometry(jtsGeom);
42

    
43
                        geom = geomFactory.createPolygon2D(gp);
44
                }
45
                else
46
                {
47
                        geom = geomFactory.createPolygon2D((Curve2D)geom);
48
                }
49
//                IGeometry aux = ShapeFactory.createPolygon2D(gp);
50
//
51
//                Geometry jtsGeom = geom.toJTSGeometry();
52
//                System.err.println(jtsGeom.toText());
53
//
54
//                geom = FConverter.jts_to_igeometry(jtsGeom);
55

    
56
            // gp.ensureOrientation(false); // Poligono exterior.
57

    
58
//                Area area = new Area(geom);
59
//            GeneralPathX gp2 = new GeneralPathX();
60
//            gp2.append(area.getPathIterator(null), true);
61
//            geom = ShapeFactory.createPolygon2D(gp2);
62

    
63
            try {
64
                                feature.setGeometry(featureStore.getDefaultFeatureType().getDefaultGeometry(),geom);
65
                        } catch (IsNotFeatureSettingException e) {
66
                                // TODO Auto-generated catch block
67
                                e.printStackTrace();
68
                        }
69
        }
70
        }
71

    
72
}