Revision 8712
trunk/extensions/extGraph_predes/src/com/iver/cit/gvsig/graph/GenerateNetworkExtension.java | ||
---|---|---|
354 | 354 |
"Error_escritura_resultados"); |
355 | 355 |
String errorDescription = PluginServices.getText(this, |
356 | 356 |
"Error_preparar_escritura_resultados"); |
357 |
return null; |
|
357 | 358 |
} |
358 | 359 |
geoprocess.setResultLayerProperties(writer, schemaManager); |
359 | 360 |
HashMap params = new HashMap(); |
trunk/extensions/extGraph_predes/src/com/iver/cit/gvsig/graph/gui/wizard/NetPage0.java | ||
---|---|---|
45 | 45 |
* |
46 | 46 |
* $Id$ |
47 | 47 |
* $Log$ |
48 |
* Revision 1.7 2006-11-09 21:08:32 azabala
|
|
48 |
* Revision 1.8 2006-11-13 20:41:08 azabala
|
|
49 | 49 |
* *** empty log message *** |
50 | 50 |
* |
51 |
* Revision 1.7 2006/11/09 21:08:32 azabala |
|
52 |
* *** empty log message *** |
|
51 | 53 |
* |
54 |
* |
|
52 | 55 |
*/ |
53 | 56 |
package com.iver.cit.gvsig.graph.gui.wizard; |
54 | 57 |
|
58 |
import java.awt.Color; |
|
59 |
|
|
55 | 60 |
import javax.swing.ButtonGroup; |
61 |
import javax.swing.JComponent; |
|
56 | 62 |
import javax.swing.JEditorPane; |
63 |
import javax.swing.JFormattedTextField; |
|
57 | 64 |
import javax.swing.JRadioButton; |
58 | 65 |
import javax.swing.JSpinner; |
59 | 66 |
import javax.swing.SpinnerNumberModel; |
... | ... | |
162 | 169 |
SpinnerNumberModel spinnerModel = |
163 | 170 |
new SpinnerNumberModel(0.01, 0d, 100d, 0.01 ); |
164 | 171 |
snapTolerance = new JSpinner(spinnerModel); |
165 |
|
|
166 |
|
|
172 |
// Disable keyboard edits in the spinner |
|
173 |
// JFormattedTextField tf = ((JSpinner.DefaultEditor) snapTolerance |
|
174 |
// .getEditor()).getTextField(); |
|
175 |
// tf.setEditable(false); |
|
176 |
// tf.setBackground(Color.white); |
|
177 |
|
|
167 | 178 |
ButtonGroup snapGroup = new ButtonGroup(); |
168 | 179 |
snapGroup.add(originalCoordinatesBtn); |
169 | 180 |
snapGroup.add(snappedCoordinatesBtn); |
trunk/extensions/extGraph_predes/src/com/iver/cit/gvsig/topology/lineclean/fmap/LineCleanGeoprocess.java | ||
---|---|---|
45 | 45 |
* |
46 | 46 |
* $Id$ |
47 | 47 |
* $Log$ |
48 |
* Revision 1.5 2006-11-10 13:22:57 azabala |
|
48 |
* Revision 1.6 2006-11-13 20:41:08 azabala |
|
49 |
* *** empty log message *** |
|
50 |
* |
|
51 |
* Revision 1.5 2006/11/10 13:22:57 azabala |
|
49 | 52 |
* better syncronization of clean and build network (use of pipetask) |
50 | 53 |
* |
51 | 54 |
* Revision 1.4 2006/11/09 21:08:32 azabala |
... | ... | |
65 | 68 |
package com.iver.cit.gvsig.topology.lineclean.fmap; |
66 | 69 |
|
67 | 70 |
import java.io.File; |
71 |
import java.io.IOException; |
|
68 | 72 |
import java.util.Map; |
69 | 73 |
|
70 | 74 |
import com.iver.andami.PluginServices; |
75 |
import com.iver.cit.gvsig.fmap.DriverException; |
|
71 | 76 |
import com.iver.cit.gvsig.fmap.MapContext; |
72 | 77 |
import com.iver.cit.gvsig.fmap.drivers.DriverIOException; |
73 | 78 |
import com.iver.cit.gvsig.fmap.drivers.FieldDescription; |
74 | 79 |
import com.iver.cit.gvsig.fmap.drivers.ILayerDefinition; |
75 | 80 |
import com.iver.cit.gvsig.fmap.drivers.LayerDefinition; |
76 | 81 |
import com.iver.cit.gvsig.fmap.drivers.SHPLayerDefinition; |
82 |
import com.iver.cit.gvsig.fmap.edition.EditionException; |
|
77 | 83 |
import com.iver.cit.gvsig.fmap.edition.IWriter; |
78 | 84 |
import com.iver.cit.gvsig.fmap.edition.ShpSchemaManager; |
79 | 85 |
import com.iver.cit.gvsig.fmap.edition.writers.shp.MultiShpWriter; |
... | ... | |
82 | 88 |
import com.iver.cit.gvsig.fmap.layers.FLayer; |
83 | 89 |
import com.iver.cit.gvsig.fmap.layers.FLayers; |
84 | 90 |
import com.iver.cit.gvsig.fmap.layers.FLyrVect; |
91 |
import com.iver.cit.gvsig.fmap.layers.ReadableVectorial; |
|
92 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.AlphanumericData; |
|
93 |
import com.iver.cit.gvsig.fmap.layers.layerOperations.VectorialData; |
|
85 | 94 |
import com.iver.cit.gvsig.fmap.operations.strategies.Strategy; |
86 | 95 |
import com.iver.cit.gvsig.fmap.operations.strategies.StrategyManager; |
96 |
import com.iver.cit.gvsig.fmap.operations.strategies.VisitException; |
|
87 | 97 |
import com.iver.cit.gvsig.geoprocess.core.fmap.AbstractGeoprocess; |
88 | 98 |
import com.iver.cit.gvsig.geoprocess.core.fmap.DefinitionUtils; |
89 | 99 |
import com.iver.cit.gvsig.geoprocess.core.fmap.FeaturePersisterProcessor2; |
... | ... | |
91 | 101 |
import com.iver.cit.gvsig.geoprocess.core.fmap.XTypes; |
92 | 102 |
import com.iver.cit.gvsig.project.documents.view.gui.View; |
93 | 103 |
import com.iver.utiles.swing.threads.AbstractMonitorableTask; |
104 |
import com.iver.utiles.swing.threads.Cancellable; |
|
94 | 105 |
import com.iver.utiles.swing.threads.IMonitorableTask; |
95 | 106 |
import com.iver.utiles.swing.threads.IPipedTask; |
96 | 107 |
|
... | ... | |
139 | 150 |
throw new GeoprocessException( |
140 | 151 |
"Operacion de CLEAN sin especificar capa de resultados"); |
141 | 152 |
} |
153 |
try { |
|
154 |
if(firstLayer.getSource().getShapeCount() == 0){ |
|
155 |
throw new GeoprocessException( |
|
156 |
"Capa de entrada vacia"); |
|
157 |
} |
|
158 |
} catch (DriverIOException e) { |
|
159 |
throw new GeoprocessException( |
|
160 |
"Error al verificar si la capa est? vac?a"); |
|
161 |
} |
|
142 | 162 |
} |
143 | 163 |
|
144 | 164 |
public void process() throws GeoprocessException { |
... | ... | |
187 | 207 |
"LineClean._Progress_Message")); |
188 | 208 |
|
189 | 209 |
} |
190 |
|
|
210 |
|
|
211 |
/** |
|
212 |
* Verifies cancelation events, and return a boolean flag if processes must |
|
213 |
* be stopped for this cancelations events. |
|
214 |
* |
|
215 |
* @param cancel |
|
216 |
* @param va |
|
217 |
* @param visitor |
|
218 |
* @return |
|
219 |
* @throws DriverIOException |
|
220 |
*/ |
|
221 |
protected boolean verifyCancelation(ReadableVectorial va) { |
|
222 |
if (isCanceled()) { |
|
223 |
try { |
|
224 |
va.stop(); |
|
225 |
} finally { |
|
226 |
return true; |
|
227 |
} |
|
228 |
} |
|
229 |
return false; |
|
230 |
} |
|
231 |
|
|
232 |
|
|
191 | 233 |
public void run() throws Exception { |
192 | 234 |
processor = |
193 | 235 |
new FeaturePersisterProcessor2(writer); |
... | ... | |
226 | 268 |
intersectsProcessor = new |
227 | 269 |
FeaturePersisterProcessor2(intersectionsWriter); |
228 | 270 |
|
229 |
|
|
230 | 271 |
FBitSet selection = null; |
231 | 272 |
LineCleanVisitor visitor = |
232 | 273 |
new LineCleanVisitor(processor, |
233 | 274 |
intersectsProcessor, |
234 | 275 |
onlyFirstLayerSelection, |
235 | 276 |
resultLayerDefinition, |
236 |
intersectDefinition); |
|
237 |
Strategy strategy = StrategyManager.getStrategy(firstLayer); |
|
277 |
intersectDefinition, |
|
278 |
firstLayer, |
|
279 |
firstLayer.getRecordset()); |
|
280 |
|
|
238 | 281 |
try { |
239 |
strategy.process(visitor, this); |
|
240 |
} catch (Exception e) { |
|
241 |
throw new GeoprocessException("Error al ejecutar el geoproceso line clean ", e); |
|
282 |
processor.start(); |
|
283 |
intersectsProcessor.start(); |
|
284 |
|
|
285 |
ReadableVectorial va = firstLayer.getSource(); |
|
286 |
va.start(); |
|
287 |
for (int i = 0; i < va.getShapeCount(); i++) {// for each geometry |
|
288 |
if (verifyCancelation(va)) { |
|
289 |
intersectsProcessor.finish(); |
|
290 |
return; |
|
291 |
} |
|
292 |
if(selection != null){ |
|
293 |
if (selection.get(i)) { |
|
294 |
reportStep(); |
|
295 |
visitor.visit(va.getShape(i), i); |
|
296 |
} |
|
297 |
|
|
298 |
}else{ |
|
299 |
reportStep(); |
|
300 |
visitor.visit(va.getShape(i), i); |
|
301 |
} |
|
302 |
}// for |
|
303 |
va.stop(); |
|
304 |
processor.finish(); |
|
305 |
intersectsProcessor.finish(); |
|
306 |
|
|
307 |
|
|
308 |
} catch (DriverIOException e) { |
|
309 |
e.printStackTrace(); |
|
242 | 310 |
} |
243 | 311 |
} |
244 | 312 |
|
trunk/extensions/extGraph_predes/src/com/iver/cit/gvsig/topology/lineclean/fmap/LineCleanVisitor.java | ||
---|---|---|
45 | 45 |
* |
46 | 46 |
* $Id$ |
47 | 47 |
* $Log$ |
48 |
* Revision 1.4 2006-10-19 16:06:48 azabala
|
|
48 |
* Revision 1.5 2006-11-13 20:41:08 azabala
|
|
49 | 49 |
* *** empty log message *** |
50 | 50 |
* |
51 |
* Revision 1.4 2006/10/19 16:06:48 azabala |
|
52 |
* *** empty log message *** |
|
53 |
* |
|
51 | 54 |
* Revision 1.3 2006/10/17 18:27:24 azabala |
52 | 55 |
* *** empty log message *** |
53 | 56 |
* |
... | ... | |
170 | 173 |
int fid = 0; |
171 | 174 |
|
172 | 175 |
public LineCleanVisitor(FeatureProcessor processor, |
173 |
FeaturePersisterProcessor2 intersectsProcessor, boolean cleanOnlySelection, ILayerDefinition layerDefinition, ILayerDefinition intersectDefinition) { |
|
176 |
FeaturePersisterProcessor2 intersectsProcessor, |
|
177 |
boolean cleanOnlySelection, |
|
178 |
ILayerDefinition layerDefinition, |
|
179 |
ILayerDefinition intersectDefinition, |
|
180 |
FLyrVect firstLayer, |
|
181 |
SelectableDataSource source) { |
|
174 | 182 |
this.featureProcessor = processor; |
175 | 183 |
this.cleanOnlySelection = cleanOnlySelection; |
176 | 184 |
processedFeatures = new FBitSet(); |
177 | 185 |
this.layerDefinition = layerDefinition; |
178 | 186 |
this.intersectProcessor = intersectsProcessor; |
179 | 187 |
this.intersectDefinition = intersectDefinition; |
188 |
this.layerToClean = firstLayer; |
|
189 |
this.recordset = source; |
|
190 |
this.strategy = StrategyManager.getStrategy(layerToClean); |
|
180 | 191 |
} |
181 | 192 |
|
182 | 193 |
public void setLayerDefinition(ILayerDefinition layerDefinition) { |
trunk/extensions/extGraph_predes/src/com/iver/cit/gvsig/util/SnappingCoordinateMap.java | ||
---|---|---|
45 | 45 |
* |
46 | 46 |
* $Id$ |
47 | 47 |
* $Log$ |
48 |
* Revision 1.1 2006-11-09 21:08:32 azabala
|
|
48 |
* Revision 1.2 2006-11-13 20:41:08 azabala
|
|
49 | 49 |
* *** empty log message *** |
50 | 50 |
* |
51 |
* Revision 1.1 2006/11/09 21:08:32 azabala |
|
52 |
* *** empty log message *** |
|
51 | 53 |
* |
54 |
* |
|
52 | 55 |
*/ |
53 | 56 |
package com.iver.cit.gvsig.util; |
54 | 57 |
|
... | ... | |
65 | 68 |
} |
66 | 69 |
|
67 | 70 |
public boolean equals(Object obj) { |
71 |
if(! (obj instanceof SnapCoordinate)) |
|
72 |
return false; |
|
68 | 73 |
SnapCoordinate other = (SnapCoordinate) obj; |
69 | 74 |
return other.distance(this) <= snapTolerance; |
70 | 75 |
} |
71 | 76 |
|
72 | 77 |
public int hashCode() { |
73 |
return 1; // esto no es eficiente |
|
78 |
int result = 17; |
|
79 |
double xs = simplify(x); |
|
80 |
double ys = simplify(y); |
|
81 |
result = 37 * result + hashCode(xs); |
|
82 |
result = 37 * result + hashCode(ys); |
|
83 |
return result; |
|
84 |
|
|
85 |
// return 1; // esto no es eficiente |
|
74 | 86 |
} |
87 |
|
|
88 |
public double simplify(double coordinate){ |
|
89 |
if(scaleFactor == 0d) |
|
90 |
return coordinate; |
|
91 |
return Math.round(coordinate * scaleFactor) / scaleFactor; |
|
92 |
} |
|
75 | 93 |
} |
94 |
|
|
95 |
|
|
76 | 96 |
|
77 | 97 |
private double snapTolerance; |
98 |
private double scaleFactor; |
|
78 | 99 |
|
79 | 100 |
public SnappingCoordinateMap(double snapTolerance) { |
80 | 101 |
super(); |
81 | 102 |
this.snapTolerance = snapTolerance; |
103 |
if(snapTolerance != 0d) |
|
104 |
this.scaleFactor = 1d / snapTolerance; |
|
82 | 105 |
} |
83 | 106 |
|
84 | 107 |
class MinDistCoordComparator implements Comparator { |
... | ... | |
115 | 138 |
public Object get(Object key){ |
116 | 139 |
if(! (key instanceof Coordinate) ) |
117 | 140 |
return null; |
118 |
return get(new SnapCoordinate((Coordinate)key)); |
|
141 |
return super.get(new SnapCoordinate((Coordinate)key));
|
|
119 | 142 |
} |
120 | 143 |
|
121 | 144 |
public boolean containsKey(Object key){ |
... | ... | |
130 | 153 |
Coordinate c0 = new Coordinate(0, 0); |
131 | 154 |
Coordinate c1 = new Coordinate(0.01, 0.01); |
132 | 155 |
Coordinate c2 = new Coordinate(0.31, 0.41); |
156 |
Coordinate c3 = new Coordinate(0.29, 0.39); |
|
157 |
Coordinate c4 = new Coordinate(0.299, 0.411); |
|
133 | 158 |
map.put(c0, c0); |
134 | 159 |
map.put(c1, c1); |
135 | 160 |
map.put(c2, c2); |
161 |
map.put(c3, c3); |
|
162 |
map.put(c4, c4); |
|
136 | 163 |
System.out.println(map.size()); |
137 | 164 |
java.util.Set values = map.entrySet(); |
138 | 165 |
System.out.println(values.size()); |
166 |
|
|
167 |
|
|
168 |
|
|
169 |
|
|
139 | 170 |
} |
140 | 171 |
|
141 | 172 |
} |
Also available in: Unified diff