Revision 37 org.gvsig.sextante/trunk/org.gvsig.sextante.app/org.gvsig.sextante.app.algorithm/org.gvsig.sextante.app.algorithm.base/src/main/java/org/gvsig/sextante/app/algorithm/base/core/ScalableUnionOperation.java
ScalableUnionOperation.java | ||
---|---|---|
29 | 29 |
import org.gvsig.fmap.dal.feature.Feature; |
30 | 30 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
31 | 31 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
32 |
import org.gvsig.fmap.geom.GeometryLocator; |
|
33 |
import org.gvsig.fmap.geom.GeometryManager; |
|
34 | 32 |
import org.gvsig.fmap.geom.Geometry.TYPES; |
35 |
import org.gvsig.fmap.geom.operation.GeometryOperationContext; |
|
36 |
import org.gvsig.fmap.geom.operation.GeometryOperationException; |
|
37 |
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException; |
|
38 |
import org.gvsig.fmap.geom.operation.fromjts.FromJTS; |
|
39 |
import org.gvsig.fmap.geom.operation.tojts.ToJTS; |
|
33 |
import org.gvsig.sextante.app.algorithm.base.util.GeometryUtil; |
|
40 | 34 |
import org.gvsig.sextante.app.algorithm.base.util.JTSFacade; |
41 | 35 |
import org.gvsig.sextante.app.algorithm.base.visitor.exception.VisitorException; |
42 | 36 |
import org.gvsig.sextante.app.extension.core.gvVectorLayer; |
... | ... | |
58 | 52 |
//(polygon features are optimized in jts with buffer(0) trick, the |
59 | 53 |
//nor the rest |
60 | 54 |
private Geometry geometry = null; |
61 |
private GeometryManager geometryManager = null; |
|
62 | 55 |
|
63 |
/*public ScalableUnionOperation(IVectorLayer input) { |
|
64 |
this.inputLayer = input; |
|
65 |
geometryManager = GeometryLocator.getGeometryManager(); |
|
66 |
}*/ |
|
67 |
|
|
68 |
public ScalableUnionOperation() { |
|
69 |
geometryManager = GeometryLocator.getGeometryManager(); |
|
70 |
} |
|
71 |
|
|
72 | 56 |
/* |
73 | 57 |
* (non-Javadoc) |
74 | 58 |
* @see org.gvsig.sextante.app.algorithm.base.core.IOperation#invoke(org.gvsig.fmap.geom.Geometry, org.gvsig.fmap.dal.feature.Feature) |
... | ... | |
80 | 64 |
if(g.getGeometryType().getType() != TYPES.SURFACE) |
81 | 65 |
return null; |
82 | 66 |
|
83 |
com.vividsolutions.jts.geom.Geometry actualGeometry = null; |
|
84 |
try { |
|
85 |
actualGeometry = (Geometry)g.invokeOperation(ToJTS.CODE, null); |
|
86 |
} catch (GeometryOperationNotSupportedException e1) { |
|
87 |
Sextante.addErrorToLog(e1); |
|
88 |
} catch (GeometryOperationException e1) { |
|
89 |
Sextante.addErrorToLog(e1); |
|
90 |
} |
|
67 |
com.vividsolutions.jts.geom.Geometry actualGeometry = GeometryUtil.geomToJTS(g); |
|
91 | 68 |
|
92 | 69 |
if(geometry == null){ |
93 | 70 |
geometry = actualGeometry; |
... | ... | |
126 | 103 |
* @return |
127 | 104 |
*/ |
128 | 105 |
private org.gvsig.fmap.geom.Geometry getGeometry() { |
129 |
GeometryOperationContext ctx = new GeometryOperationContext(); |
|
130 |
ctx.setAttribute(FromJTS.PARAM, geometry); |
|
131 |
try { |
|
132 |
return (org.gvsig.fmap.geom.Geometry)geometryManager.invokeOperation(FromJTS.NAME, ctx); |
|
133 |
} catch (GeometryOperationNotSupportedException e) { |
|
134 |
Sextante.addErrorToLog(e); |
|
135 |
return null; |
|
136 |
} catch (GeometryOperationException e) { |
|
137 |
Sextante.addErrorToLog(e); |
|
138 |
return null; |
|
139 |
} |
|
106 |
return GeometryUtil.jtsToGeom(geometry); |
|
140 | 107 |
} |
141 | 108 |
|
142 | 109 |
/** |
... | ... | |
152 | 119 |
if(g.getGeometryType().getType() != TYPES.SURFACE) |
153 | 120 |
return; |
154 | 121 |
|
155 |
com.vividsolutions.jts.geom.Geometry actualGeometry = null; |
|
156 |
try { |
|
157 |
actualGeometry = (Geometry)g.invokeOperation(ToJTS.CODE, null); |
|
158 |
} catch (GeometryOperationNotSupportedException e1) { |
|
159 |
Sextante.addErrorToLog(e1); |
|
160 |
} catch (GeometryOperationException e1) { |
|
161 |
Sextante.addErrorToLog(e1); |
|
162 |
} |
|
122 |
com.vividsolutions.jts.geom.Geometry actualGeometry = GeometryUtil.geomToJTS(g); |
|
163 | 123 |
|
164 | 124 |
if(geometry == null){ |
165 | 125 |
geometry = actualGeometry; |
Also available in: Unified diff