Revision 11296 branches/v10/extensions/extGraph_predes/src/com/iver/cit/gvsig/graph/core/loaders/NetworkLoader.java

View differences:

NetworkLoader.java
77 77
import edu.uci.ics.jung.visualization.SettableVertexLocationFunction;
78 78

  
79 79
public class NetworkLoader implements INetworkLoader {
80
	
80

  
81 81
	private String fieldNodeId = "NODEID";
82 82
	private String fieldNodeX = "X";
83 83
	private String fieldNodeY = "Y";
......
92 92

  
93 93
	private SelectableDataSource nodeReader;
94 94
	private SelectableDataSource edgeReader;
95
	
95

  
96 96
	private Indexer indexer;
97
	
97

  
98 98
	private boolean bUseCostField;
99
	
99

  
100 100
	/**
101 101
     * The user data key used to retrieve the vertex locations (if any) defined by this class.
102 102
     */
103 103
    public static final String LOCATIONS = "jung.io.GvSIGNetReader.LOCATIONS";
104
    
104

  
105 105
	protected SettableVertexLocationFunction v_locations = new DefaultSettableVertexLocationFunction();
106 106

  
107 107

  
......
110 110
	 * private String fieldNodeId = "NODEID";
111 111
	 * 	 fieldNodeX = "X";
112 112
	 * 	 fieldNodeY = "Y";
113
	 * 
113
	 *
114 114
	 * 	 fieldArcId = "NODEID";
115 115
	 * 	 fieldDirection = "X";
116 116
	 * 	 fieldNodeOrig = "Y";
117 117
	 * 	 fieldNodeEnd = "NODEORIGIN";
118 118
	 * 	 fieldType = "NODEEND";
119 119
	 * 	 fieldDist = "DIST";
120
	 * 
120
	 *
121 121
	 * If you need to change any, use the correspondant "setFieldXXXX"
122
	 * BEFORE calling loadNetwork. And remember to set nodeReader and 
122
	 * BEFORE calling loadNetwork. And remember to set nodeReader and
123 123
	 * edgeReader also.
124 124
	 */
125 125
	public NetworkLoader(boolean bUseCostField) {
126 126
		this.bUseCostField = bUseCostField;
127 127
	}
128 128

  
129
	
129

  
130 130
	public String getFieldArcId() {
131 131
		return fieldArcId;
132 132
	}
......
235 235
        DataSource dsNodes;
236 236
		try {
237 237
			dsNodes = dsf.createRandomDataSource("nodes",
238
			        DataSourceFactory.MANUAL_OPENING);
239
	
238
			        DataSourceFactory.AUTOMATIC_OPENING);//MANUAL_OPENING);
239

  
240 240
	        DataSource dsEdges = dsf.createRandomDataSource("edges",
241
	                DataSourceFactory.MANUAL_OPENING);
242
		
243
				
241
	                DataSourceFactory.AUTOMATIC_OPENING);//MANUAL_OPENING);
242

  
243

  
244 244
			SelectableDataSource sdsNodes = new SelectableDataSource(dsNodes);
245 245
			SelectableDataSource sdsEdges = new SelectableDataSource(dsEdges);
246
			
246

  
247 247
			netLoader.setNodeReader(sdsNodes);
248 248
			netLoader.setEdgeReader(sdsEdges);
249
			
250
			
249

  
250

  
251 251
			Graph g = netLoader.loadJungNetwork();
252
			
252

  
253 253
			System.out.println("Num nodos=" + g.numVertices() + " numEdges = " + g.numEdges());
254
			
254

  
255 255
			// Probamos la algoritmia: distancia entre nodo 1 y nodo 1000
256 256
			DijkstraDistance distCalculator = new DijkstraDistance(g, new EdgeWeightLabeller());
257 257
			ArchetypeVertex vOrig = netLoader.indexer.getVertex(1);
......
259 259
			long t1 = System.currentTimeMillis();
260 260
			Number dist = distCalculator.getDistance(vOrig, vEnd);
261 261
			long t2 = System.currentTimeMillis();
262
			
263
			
262

  
263

  
264 264
			System.out.println("dist =" + dist + " meters. msecs: " + (t2-t1));
265 265
			System.out.println(vOrig + " - " + vEnd);
266 266
			System.out.println(vOrig.getUserDatum("X") + ", " + vOrig.getUserDatum("Y")
267 267
							+ " - " + vEnd.getUserDatum("X") + ", " + vEnd.getUserDatum("Y"));
268
			
268

  
269 269
		} catch (DriverLoadException e) {
270 270
			// TODO Auto-generated catch block
271 271
			e.printStackTrace();
......
291 291
			int fieldIndexNodeEnd = edgeReader.getFieldIndexByName(fieldNodeEnd);
292 292
			int fieldIndexType = edgeReader.getFieldIndexByName(fieldType);
293 293
			int fieldIndexDist = edgeReader.getFieldIndexByName(fieldDist);
294
			
295
			
294

  
295

  
296 296
			SparseGraph g = new SparseGraph();
297 297
//			g.getEdgeConstraints().clear();
298 298
			long t1 = System.currentTimeMillis();
299
			
299

  
300 300
			// Mirar NumberEdgeVAlue e Indexer
301 301
			for (int i=0; i < nodeReader.getRowCount(); i++)
302 302
			{
......
308 308
				v.addUserDatum("X", x, UserData.CLONE);
309 309
				v.addUserDatum("Y", y, UserData.CLONE);
310 310
				v_locations.setLocation(v, new Point2D.Double(x.doubleValue(),y.doubleValue()));
311
				g.addVertex(v);				
311
				g.addVertex(v);
312 312
			}
313 313
			indexer = Indexer.getIndexer(g);
314
			
314

  
315 315
			for (int i=0; i < edgeReader.getRowCount(); i++)
316 316
			{
317 317
				NumericValue arcID = (NumericValue) edgeReader.getFieldValue(i, fieldIndexArcID);
......
320 320
				NumericValue nodeEnd = (NumericValue) edgeReader.getFieldValue(i, fieldIndexNodeEnd);
321 321
				NumericValue type = (NumericValue) edgeReader.getFieldValue(i, fieldIndexType);
322 322
				NumericValue dist = (NumericValue) edgeReader.getFieldValue(i, fieldIndexDist);
323
				
323

  
324 324
				Vertex vFrom = (Vertex) indexer.getVertex(nodeOrig.intValue());
325 325
				Vertex vTo = (Vertex) indexer.getVertex(nodeEnd.intValue());
326
				
326

  
327 327
				FEdge edge = new FEdge(vFrom, vTo);
328 328
				edge.setArcID(arcID.intValue());
329 329
				edge.setDirection(direc.intValue());
......
331 331
				edge.setIdNodeEnd(nodeEnd.intValue());
332 332
				edge.setType(type.intValue());
333 333
				edge.setWeight(dist.doubleValue());
334
				
334

  
335 335
				g.addEdge(edge);
336 336
			}
337 337
			long t2 = System.currentTimeMillis();
......
358 358
			int fieldIndexType = edgeReader.getFieldIndexByName(fieldType);
359 359
			int fieldIndexDist = edgeReader.getFieldIndexByName(fieldDist);
360 360
			int fieldIndexCost = edgeReader.getFieldIndexByName(fieldCost);
361
			
362
			
361

  
362

  
363 363
			GvGraph g = new GvGraph();
364 364
			long t1 = System.currentTimeMillis();
365
			
365

  
366 366
			// Mirar NumberEdgeVAlue e Indexer
367 367
			for (int i=0; i < nodeReader.getRowCount(); i++)
368 368
			{
......
373 373
				node.setX(x.doubleValue());
374 374
				node.setY(y.doubleValue());
375 375
				node.setIdNode(i);
376
				g.addNode(node);				
376
				g.addNode(node);
377 377
			}
378
			
378

  
379 379
			for (int i=0; i < edgeReader.getRowCount(); i++)
380 380
			{
381 381
				NumericValue arcID = (NumericValue) edgeReader.getFieldValue(i, fieldIndexArcID);
......
384 384
				NumericValue nodeEnd = (NumericValue) edgeReader.getFieldValue(i, fieldIndexNodeEnd);
385 385
				NumericValue type = (NumericValue) edgeReader.getFieldValue(i, fieldIndexType);
386 386
				NumericValue dist = (NumericValue) edgeReader.getFieldValue(i, fieldIndexDist);
387
				
387

  
388 388
				GvEdge edge = new GvEdge();
389 389
				edge.setIdArc(arcID.intValue());
390 390
				edge.setIdEdge(i);
......
398 398
					NumericValue cost = (NumericValue) edgeReader.getFieldValue(i, fieldIndexCost);
399 399
					edge.setWeight(cost.doubleValue());
400 400
				}
401
				
401

  
402 402
				g.addEdge(edge);
403 403
			}
404 404
			long t2 = System.currentTimeMillis();

Also available in: Unified diff