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 |
} |