Revision 1261 org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.merge/src/main/java/org/gvsig/geoprocess/algorithm/merge/MergeOperation.java
MergeOperation.java | ||
---|---|---|
36 | 36 |
|
37 | 37 |
/** |
38 | 38 |
* Builds a geometry with the intersection between two layers |
39 |
*
|
|
39 |
* |
|
40 | 40 |
* @author <a href="mailto:nachobrodin@gmail.com">Nacho Brodin</a> |
41 | 41 |
*/ |
42 | 42 |
public class MergeOperation extends GeometryOperation { |
43 |
private IVectorLayer layer = null; |
|
44 | 43 |
|
45 |
public MergeOperation(IVectorLayer layer, AbstractSextanteGeoProcess p) { |
|
46 |
super(p); |
|
47 |
this.layer = layer; |
|
48 |
} |
|
44 |
private IVectorLayer layer = null; |
|
49 | 45 |
|
50 |
/** |
|
51 |
* Computes intersection between the geometry and the overlay layer. The fields of the |
|
52 |
* intersected features will be added. |
|
53 |
* @param g |
|
54 |
* @param featureInput |
|
55 |
* @return |
|
56 |
*/ |
|
57 |
public EditableFeature invoke(org.gvsig.fmap.geom.Geometry g, Feature featureInput) { |
|
58 |
if(g == null) |
|
59 |
return lastEditFeature; |
|
60 |
|
|
61 |
try { |
|
62 |
if(inFeatureStore == ((FlyrVectIVectorLayer)layer).getFeatureStore()) |
|
63 |
lastEditFeature = persister.addFeature(featureInput, g); |
|
64 |
else |
|
65 |
lastEditFeature = persister.addDifferentFieldFeature(featureInput, g); |
|
66 |
} catch (CreateGeometryException e) { |
|
67 |
Sextante.addErrorToLog(e); |
|
68 |
} catch (DataException e) { |
|
69 |
Sextante.addErrorToLog(e); |
|
70 |
} |
|
71 |
|
|
72 |
return lastEditFeature; |
|
73 |
} |
|
74 |
|
|
75 |
/** |
|
76 |
* clips feature's geometry with the clipping geometry, preserving |
|
77 |
* feature's original attributes. |
|
78 |
* If feature's geometry doesn't touch clipping geometry, it will be |
|
79 |
* ignored. |
|
80 |
*/ |
|
81 |
public void invoke(org.gvsig.fmap.geom.Geometry g, EditableFeature featureInput) { |
|
82 |
try { |
|
83 |
lastEditFeature = persister.addGeometryToExistingFeature(featureInput, g); |
|
84 |
} catch (CreateGeometryException e) { |
|
85 |
Sextante.addErrorToLog(e); |
|
86 |
} catch (DataException e) { |
|
87 |
Sextante.addErrorToLog(e); |
|
88 |
} |
|
89 |
} |
|
46 |
public MergeOperation(IVectorLayer layer, AbstractSextanteGeoProcess p) { |
|
47 |
super(p); |
|
48 |
this.layer = layer; |
|
49 |
} |
|
50 |
|
|
51 |
/** |
|
52 |
* Computes intersection between the geometry and the overlay layer. The |
|
53 |
* fields of the intersected features will be added. |
|
54 |
* |
|
55 |
* @param g |
|
56 |
* @param featureInput |
|
57 |
* @return |
|
58 |
*/ |
|
59 |
public EditableFeature invoke(org.gvsig.fmap.geom.Geometry g, Feature featureInput) { |
|
60 |
if (g == null) { |
|
61 |
return lastEditFeature; |
|
62 |
} |
|
63 |
|
|
64 |
try { |
|
65 |
if (inFeatureStore == ((FlyrVectIVectorLayer) layer).getFeatureStore()) { |
|
66 |
lastEditFeature = persister.addFeature(featureInput, g); |
|
67 |
} else { |
|
68 |
lastEditFeature = persister.addDifferentFieldFeature(featureInput, g); |
|
69 |
} |
|
70 |
} catch (CreateGeometryException e) { |
|
71 |
Sextante.addErrorToLog(e); |
|
72 |
} catch (DataException e) { |
|
73 |
Sextante.addErrorToLog(e); |
|
74 |
} |
|
75 |
|
|
76 |
return lastEditFeature; |
|
77 |
} |
|
78 |
|
|
79 |
/** |
|
80 |
* clips feature's geometry with the clipping geometry, preserving feature's |
|
81 |
* original attributes. If feature's geometry doesn't touch clipping |
|
82 |
* geometry, it will be ignored. |
|
83 |
*/ |
|
84 |
public void invoke(org.gvsig.fmap.geom.Geometry g, EditableFeature featureInput) { |
|
85 |
try { |
|
86 |
lastEditFeature = persister.addGeometryToExistingFeature(featureInput, g); |
|
87 |
} catch (CreateGeometryException e) { |
|
88 |
Sextante.addErrorToLog(e); |
|
89 |
} catch (DataException e) { |
|
90 |
Sextante.addErrorToLog(e); |
|
91 |
} |
|
92 |
} |
|
90 | 93 |
} |
91 |
|
Also available in: Unified diff