Revision 31856

View differences:

trunk/extensions/extGraph/extGraph/.project
1
<?xml version="1.0" encoding="UTF-8"?>
2
<projectDescription>
3
	<name>extGraph</name>
4
	<comment></comment>
5
	<projects>
6
	</projects>
7
	<buildSpec>
8
		<buildCommand>
9
			<name>org.eclipse.jdt.core.javabuilder</name>
10
			<arguments>
11
			</arguments>
12
		</buildCommand>
13
		<buildCommand>
14
			<name>de.loskutov.FileSync.FSBuilder</name>
15
			<arguments>
16
			</arguments>
17
		</buildCommand>
18
	</buildSpec>
19
	<natures>
20
		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
21
		<nature>org.eclipse.jdt.core.javanature</nature>
22
		<nature>org.eclipse.jem.beaninfo.BeanInfoNature</nature>
23
	</natures>
24
</projectDescription>
0 25

  
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestClosestFacilty.java
1
package com.iver.cit.gvsig.graphtests;
2

  
3
import java.io.File;
4

  
5
import junit.framework.TestCase;
6

  
7
import org.cresques.cts.IProjection;
8
import org.gvsig.exceptions.BaseException;
9
import org.gvsig.graph.core.GvFlag;
10
import org.gvsig.graph.core.IGraph;
11
import org.gvsig.graph.core.Network;
12
import org.gvsig.graph.core.loaders.NetworkRedLoader;
13
import org.gvsig.graph.solvers.OneToManySolver;
14
import org.gvsig.graph.solvers.Route;
15
import org.gvsig.graph.solvers.ShortestPathSolverAStar;
16

  
17
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
18
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
19
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
20

  
21
public class TestClosestFacilty extends TestCase {
22
	FLyrVect lyr;
23
	Network net;
24
	IGraph g;
25
	
26
	protected void setUp() throws Exception {
27
		super.setUp();
28
		// Setup de los drivers
29
		LayerFactory
30
				.setDriversPath("../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers");
31

  
32
		// Setup del factory de DataSources
33

  
34
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
35
		File shpFile = new File("test_files/ejes.shp");
36
		lyr = (FLyrVect) LayerFactory.createLayer("Ejes", "gvSIG shp driver",
37
				shpFile, prj);
38
		
39
		NetworkRedLoader netLoader = new NetworkRedLoader();
40
		netLoader.setNetFile(new File("test_files/ejes.net"));
41
		g = netLoader.loadNetwork();
42
		
43
		net = new Network();
44
	}
45
	
46
	public void testCalculate() throws BaseException {
47
		OneToManySolver solver = new OneToManySolver();
48
		net.setLayer(lyr);
49
		net.setGraph(g);
50
		solver.setNetwork(net);
51
		
52
		//		 Source flag
53
		GvFlag sourceFlag = net.createFlag(442177.19, 4476236.12, 10);
54
		net.addFlag(sourceFlag);
55
		solver.setSourceFlag(sourceFlag);
56
		
57
		GvFlag[] facilitiesFlags={
58
				net.createFlag(442211.67, 4476093.92, 10),
59
				net.createFlag(441703.18, 4475266.55, 10),
60
				net.createFlag(441022.33, 4476843.72, 10),
61
				net.createFlag(442612.42, 4476744.61, 10)
62
		};
63
		
64
		//		 Destination flags
65
		// NONE: We will use dijkstra algorithm to label network
66
		// and extract (after) the visited arcs.
67
		for (int i = 0; i < facilitiesFlags.length; i++) {
68
			net.addFlag(facilitiesFlags[i]);
69
		}
70

  
71
		long t1 = System.currentTimeMillis();
72
		solver.putDestinationsOnNetwork(net.getFlags());
73
		solver.setExploreAllNetwork(false);
74
		solver.setMaxCost(4000.0);
75
		solver.calculate();
76
		solver.removeDestinationsFromNetwork(net.getFlags());
77
		
78
		// En este punto tenemos la red "etiquetada" con los pesos
79
		// y distancias. Hay 2 opciones: recorrer toda la capa
80
		// y copiar los registros que nos interesan (opci?n f?cil)
81
		// o implementar un listener que vaya vigilando los
82
		// arcos que se est?n evaluando dentro del algoritmo de
83
		// dijkstra.
84
		// Primero opci?n f?cil
85
		// Recorremos la capa, vemos en qu? intervalo cae cada
86
		// entidad y escribimos un shape.
87
		
88
		GvFlag[] flags=net.getFlags();
89
		GvFlag closestFlag=null;
90
		if(flags.length>1){
91
			closestFlag=flags[1];
92
			
93
			for(int i=1;i<flags.length;i++){
94
				if(flags[i].getCost()<closestFlag.getCost()) closestFlag=flags[i];
95
			}
96
			
97
			System.out.println("Hacia el Proveedor:\nProveedor m?s cercano: "+closestFlag.getIdFlag()+" ("+closestFlag.getCost()+")");
98
		}
99
		else {
100
			System.out.println("Sin proveedores");
101
		}
102
		
103
		long t2 = System.currentTimeMillis();
104
		System.out.println("tiempo:" + (t2-t1));
105
		
106
		
107
		//Desde el proveedor
108
		try {
109
			this.setUp();
110
		} catch (Exception e) {
111
			// TODO Auto-generated catch block
112
			e.printStackTrace();
113
		}
114
		
115
		ShortestPathSolverAStar solverFromFacility=new ShortestPathSolverAStar();
116
		net.setLayer(lyr);
117
		net.setGraph(g);
118
		solverFromFacility.setNetwork(net);
119
		
120
		GvFlag destinyFlag = sourceFlag; //Ahora el punto de origen pasa a ser el destino
121
		
122
		Route bestRoute=null;
123
		GvFlag closestFacility=null;
124
		long ini=System.currentTimeMillis();
125
		for (int i = 0; i < facilitiesFlags.length; i++) {
126
			net.removeFlags();
127
			net.addFlag(facilitiesFlags[i]);
128
			net.addFlag(destinyFlag);
129
			Route route=solverFromFacility.calculateRoute();
130
			if(bestRoute==null || route.getCost()<bestRoute.getCost()){
131
				bestRoute=route;
132
				closestFacility=facilitiesFlags[i];
133
			}
134
		}
135
		long time=System.currentTimeMillis()-ini;
136
		
137
		System.out.println("Desde el proveedor: ");
138
		System.out.println("El mejor proveedor es: "+closestFacility.getIdFlag()+" ("+bestRoute.getCost()+")");
139
		
140
		System.out.println("Coste: "+time);
141
		
142
		
143
		// assertEquals(dist.doubleValue(), 8887, 0);
144
	}
145
}
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestServiceAreaPolygonVisAD.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41

  
42

  
43
package com.iver.cit.gvsig.graphtests;
44

  
45
import java.io.File;
46

  
47
import junit.framework.TestCase;
48

  
49
import org.cresques.cts.IProjection;
50
import org.gvsig.exceptions.BaseException;
51
import org.gvsig.graph.core.GvFlag;
52
import org.gvsig.graph.core.IGraph;
53
import org.gvsig.graph.core.Network;
54
import org.gvsig.graph.core.loaders.NetworkRedLoader;
55
import org.gvsig.graph.solvers.CompactAreaExtractor;
56
import org.gvsig.graph.solvers.CompactAreaExtractorVisAD;
57
import org.gvsig.graph.solvers.OneToManySolver;
58
import org.gvsig.graph.solvers.ServiceAreaExtractor2;
59

  
60
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
61
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
62
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
63

  
64
/**
65
 * @author fjp
66
 *
67
 * A partir de un iterador de Features (de l?neas), implementamos probamos que
68
 * podemos generar un pol?gono (si puede ser, convexo) que las
69
 * englobe todas. 
70
 */
71
public class TestServiceAreaPolygonVisAD extends TestCase {
72

  
73
	FLyrVect lyr;
74
	Network net;
75
	IGraph g;
76

  
77

  
78
	protected void setUp() throws Exception {
79
		super.setUp();
80
		// Setup de los drivers
81
		LayerFactory
82
				.setDriversPath("../_fwAndami/gvSIG/extensiones/org.gvsig/drivers");
83

  
84
		// Setup del factory de DataSources
85

  
86
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
87
		File shpFile = new File("test_files/ejes.shp");
88
		lyr = (FLyrVect) LayerFactory.createLayer("Ejes", "gvSIG shp driver",
89
				shpFile, prj);
90
		
91
		NetworkRedLoader netLoader = new NetworkRedLoader();
92
		netLoader.setNetFile(new File("test_files/ejes.net"));
93
		g = netLoader.loadNetwork();
94
		
95
		net = new Network();
96
	}
97

  
98
	public void testCalculate() throws BaseException {
99
		OneToManySolver solver = new OneToManySolver();
100
		net.setLayer(lyr);
101
		net.setGraph(g);
102
		solver.setNetwork(net);
103
		
104
		ServiceAreaExtractor2 extractor = new ServiceAreaExtractor2(net);
105
		solver.addListener(extractor);
106
		extractor.setDoCompactArea(true);
107
		
108
		CompactAreaExtractorVisAD compact = new CompactAreaExtractorVisAD(net);
109
		// solver.addListener(compact);
110
		//		 Source flag
111
		GvFlag sourceFlag = net.createFlag(441905.80, 4475975.2, 10);
112
		extractor.setIdFlag(0);
113
		net.addFlag(sourceFlag);
114
		solver.setSourceFlag(sourceFlag);
115
		double[] costs = {1000.0};
116
		extractor.setCosts(costs);
117

  
118
		//		 Destination flags
119
		// NONE: We will use dijkstra algorithm to label network
120
		// and extract (after) the visited arcs.
121
//		net.addFlag(441901, 4475977, 10);
122
//		net.addFlag(442830, 4476201, 200);
123
//		net.addFlag(442673, 4475125, 200);
124
		long t1 = System.currentTimeMillis();
125
		solver.putDestinationsOnNetwork(net.getFlags());
126
		solver.setExploreAllNetwork(true);
127
		solver.setMaxDistance(1000.0);
128
		solver.calculate();
129
		extractor.writeServiceArea();
130
		
131
		extractor.getBorderPoints();
132
		extractor.closeFiles();
133
		solver.removeDestinationsFromNetwork(net.getFlags());
134
		
135
//		compact.writeServiceArea();
136
//		compact.closeFiles();
137
		
138
		long t2 = System.currentTimeMillis();
139
		System.out.println("tiempo:" + (t2-t1));
140
		
141
		// assertEquals(dist.doubleValue(), 8887, 0);
142

  
143
		
144
		
145

  
146

  
147
	}
148

  
149
}
0 150

  
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestServiceArea.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41

  
42
package com.iver.cit.gvsig.graphtests;
43

  
44
import java.io.File;
45

  
46
import junit.framework.TestCase;
47

  
48
import org.cresques.cts.IProjection;
49
import org.gvsig.exceptions.BaseException;
50
import org.gvsig.graph.core.GvFlag;
51
import org.gvsig.graph.core.IGraph;
52
import org.gvsig.graph.core.Network;
53
import org.gvsig.graph.core.loaders.NetworkRedLoader;
54
import org.gvsig.graph.solvers.OneToManySolver;
55
import org.gvsig.graph.solvers.ServiceAreaExtractor;
56

  
57
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
58
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
59
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
60

  
61
public class TestServiceArea extends TestCase {
62

  
63
	FLyrVect lyr;
64
	Network net;
65
	IGraph g;
66

  
67

  
68
	protected void setUp() throws Exception {
69
		super.setUp();
70
		// Setup de los drivers
71
		LayerFactory
72
				.setDriversPath("../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers");
73

  
74
		// Setup del factory de DataSources
75

  
76
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
77
		File shpFile = new File("test_files/ejes.shp");
78
		lyr = (FLyrVect) LayerFactory.createLayer("Ejes", "gvSIG shp driver",
79
				shpFile, prj);
80
		
81
		NetworkRedLoader netLoader = new NetworkRedLoader();
82
		netLoader.setNetFile(new File("test_files/ejes.net"));
83
		g = netLoader.loadNetwork();
84
		
85
		net = new Network();
86
	}
87

  
88
	public void testCalculate() throws BaseException {
89
		OneToManySolver solver = new OneToManySolver();
90
		net.setLayer(lyr);
91
		net.setGraph(g);
92
		solver.setNetwork(net);
93
		
94
		ServiceAreaExtractor extractor = new ServiceAreaExtractor(net);
95
		
96
		//		 Source flag
97
		GvFlag sourceFlag = net.createFlag(441901, 4475977, 10);
98
		net.addFlag(sourceFlag);
99
		solver.setSourceFlag(sourceFlag);
100

  
101
		//		 Destination flags
102
		// NONE: We will use dijkstra algorithm to label network
103
		// and extract (after) the visited arcs.
104
//		net.addFlag(441901, 4475977, 10);
105
//		net.addFlag(442830, 4476201, 200);
106
//		net.addFlag(442673, 4475125, 200);
107
		long t1 = System.currentTimeMillis();
108
		solver.putDestinationsOnNetwork(net.getFlags());
109
		solver.setExploreAllNetwork(true);
110
		solver.setMaxDistance(4000.0);
111
		solver.calculate();
112
		solver.removeDestinationsFromNetwork(net.getFlags());
113
		
114
		// En este punto tenemos la red "etiquetada" con los pesos
115
		// y distancias. Hay 2 opciones: recorrer toda la capa
116
		// y copiar los registros que nos interesan (opci?n f?cil)
117
		// o implementar un listener que vaya vigilando los
118
		// arcos que se est?n evaluando dentro del algoritmo de
119
		// dijkstra.
120
		// Primero opci?n f?cil
121
		// Recorremos la capa, vemos en qu? intervalo cae cada
122
		// entidad y escribimos un shape.
123
		double[] costs = {1000.0, 2000.0, 4000.0};
124
		extractor.doExtract(0, costs); // 2000 en unidades de coste. Normalmente ser?n segundos
125
		// TODO: Tambi?n puede ser interesante fijar un l?mite en distancia, no
126
		// en tiempo
127
		
128
		
129
		long t2 = System.currentTimeMillis();
130
		System.out.println("tiempo:" + (t2-t1));
131
		
132
		// assertEquals(dist.doubleValue(), 8887, 0);
133

  
134
		
135
		
136

  
137

  
138
	}
139

  
140
}
0 141

  
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestNetworkGvTableWriter.java
1
package com.iver.cit.gvsig.graphtests;
2

  
3

  
4
import java.io.File;
5

  
6
import junit.framework.TestCase;
7

  
8
import org.cresques.cts.IProjection;
9
import org.gvsig.exceptions.BaseException;
10
import org.gvsig.graph.core.writers.NetworkGvTableWriter;
11

  
12
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
13
import com.iver.cit.gvsig.fmap.edition.writers.dbf.DbfWriter;
14
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
15
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
16

  
17
public class TestNetworkGvTableWriter extends TestCase {
18
	NetworkGvTableWriter netBuilder = new NetworkGvTableWriter();
19
	FLyrVect lyr;
20
	/*
21
	 * Test method for
22
	 * 'org.gvsig.graph.core.NetworkWriter.writeNetwork()'
23
	 */
24
	public void testWriteNetwork() {
25
		try {
26
			long t1 = System.currentTimeMillis();
27
			netBuilder.writeNetwork();
28
			long t2 = System.currentTimeMillis();
29
			System.out.println("Building DBF time:" + (t2-t1) + " msecs.");
30
		} catch (BaseException e) {
31
			// TODO Auto-generated catch block
32
			e.printStackTrace();
33
		}
34
	}
35

  
36

  
37
	protected void setUp() throws Exception {
38
		LayerFactory
39
				.setDriversPath("../_fwAndami/gvSIG/extensiones/org.gvsig/drivers");
40
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
41
		File shpFile = new File("c:/ejes.shp");
42
		lyr = (FLyrVect) LayerFactory.createLayer("Ejes",
43
				"gvSIG shp driver", shpFile, prj);
44

  
45
		String fieldType = "tipored";
46
		String fieldDist = "length";
47
		String fieldCost = "cost";
48
		String fieldSense = "";
49

  
50
		netBuilder.setLayer(lyr);
51
		netBuilder.setFieldCost(fieldCost);
52
		netBuilder.setFieldType(fieldType);
53
		netBuilder.setFieldDist(fieldDist);
54
		netBuilder.setFieldSense(fieldSense);
55
		DbfWriter nodeWriter = new DbfWriter();
56
		File nodeFile = new File("c:/nodes.dbf");
57
		nodeFile.delete();
58
		nodeWriter.setFile(nodeFile);
59

  
60
		File edgeFile = new File("c:/edges.dbf");
61
		DbfWriter edgeWriter = new DbfWriter();
62
		edgeWriter.setFile(edgeFile);
63
		
64
		
65
		netBuilder.setEdgeWriter(edgeWriter);
66
		netBuilder.setNodeWriter(nodeWriter);
67
		
68
		
69
		
70
	}
71

  
72
}
0 73

  
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/AllTests.java
1
package com.iver.cit.gvsig.graphtests;
2

  
3

  
4
import junit.framework.Test;
5
import junit.framework.TestSuite;
6

  
7
public class AllTests {
8

  
9
	public static Test suite() {
10
		TestSuite suite = new TestSuite(
11
				"Test for org.gvsig.graph.test");
12
		//$JUnit-BEGIN$
13
		suite.addTestSuite(TestJGraphT_BAD_SHORTEST_PATH.class);
14
		suite.addTestSuite(TestAngle.class);
15
		//$JUnit-END$
16
		return suite;
17
	}
18

  
19
}
20

  
21

  
0 22

  
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestNetworJdbcWriter.java
1
package com.iver.cit.gvsig.graphtests;
2

  
3

  
4
import java.io.File;
5
import java.sql.Connection;
6
import java.sql.DriverManager;
7

  
8
import junit.framework.TestCase;
9

  
10
import org.cresques.cts.IProjection;
11
import org.gvsig.exceptions.BaseException;
12
import org.gvsig.graph.core.writers.NetworkJdbcWriter;
13

  
14
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
15
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
16
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
17

  
18
public class TestNetworJdbcWriter extends TestCase {
19
	NetworkJdbcWriter netBuilder = new NetworkJdbcWriter();
20
	FLyrVect lyr;
21
	/*
22
	 * Test method for
23
	 * 'org.gvsig.graph.core.NetworkWriter.writeNetwork()'
24
	 */
25
	public void testWriteNetwork() {
26
		try {
27
			long t1 = System.currentTimeMillis();
28
			netBuilder.writeNetwork();
29
			long t2 = System.currentTimeMillis();
30
			System.out.println("Building MYSQL time:" + (t2-t1) + " msecs.");
31
		} catch (BaseException e) {
32
			// TODO Auto-generated catch block
33
			e.printStackTrace();
34
		}
35
	}
36

  
37

  
38
	protected void setUp() throws Exception {
39
		LayerFactory
40
				.setDriversPath("../_fwAndami/gvSIG/extensiones/org.gvsig/drivers");
41
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
42
		File shpFile = new File("c:/ejes.shp");
43
		lyr = (FLyrVect) LayerFactory.createLayer("Ejes",
44
				"gvSIG shp driver", shpFile, prj);
45

  
46
		String fieldType = "tipored";
47
		String fieldDist = "length";
48
		String fieldCost = "cost";
49
		String fieldSense = "";
50

  
51
		netBuilder.setLayer(lyr);
52
		netBuilder.setFieldCost(fieldCost);
53
		netBuilder.setFieldType(fieldType);
54
		netBuilder.setFieldDist(fieldDist);
55
		netBuilder.setFieldSense(fieldSense);
56

  
57
        String dbURL = "jdbc:mysql://localhost:3306/test";  
58
        String user = "root";
59
        String pwd = "aquilina";
60
        Connection conn;
61
		conn = DriverManager.getConnection(dbURL, user, pwd);
62

  
63
		netBuilder.setConnection(conn);
64
		
65
		
66
		
67
	}
68

  
69
}
0 70

  
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestLoader_and_ShortestPath.java
1
package com.iver.cit.gvsig.graphtests;
2

  
3

  
4
import java.io.File;
5

  
6
import junit.framework.TestCase;
7

  
8
import org.cresques.cts.IProjection;
9
import org.gvsig.exceptions.BaseException;
10
import org.gvsig.graph.core.EdgeWeightLabeller;
11
import org.gvsig.graph.core.FNode;
12
import org.gvsig.graph.core.GraphException;
13
import org.gvsig.graph.core.IGraph;
14
import org.gvsig.graph.core.JungGraph;
15
import org.gvsig.graph.core.Network;
16
import org.gvsig.graph.core.loaders.NetworkLoader;
17
import org.gvsig.graph.core.loaders.NetworkRedLoader;
18
import org.gvsig.graph.solvers.Route;
19
import org.gvsig.graph.solvers.ShortestPathSolverAStar;
20
import org.gvsig.graph.solvers.ShortestPathSolverDijkstra;
21

  
22
import com.hardcode.gdbms.engine.data.DataSource;
23
import com.hardcode.gdbms.engine.data.DataSourceFactory;
24
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
25
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
26
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
27
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
28

  
29
import edu.uci.ics.jung.algorithms.shortestpath.DijkstraDistance;
30
import edu.uci.ics.jung.algorithms.shortestpath.DijkstraShortestPath;
31
import edu.uci.ics.jung.graph.ArchetypeVertex;
32
import edu.uci.ics.jung.graph.Graph;
33

  
34
public class TestLoader_and_ShortestPath extends TestCase {
35
	DataSourceFactory dsf;
36

  
37
	FLyrVect lyr;
38

  
39
	public void testLoadRedNetwork() {
40
		NetworkRedLoader netLoader = new NetworkRedLoader();
41
		netLoader.setNetFile(new File("test_files/ejes.net"));
42
		IGraph g = netLoader.loadNetwork();
43

  
44
		// Probamos la algoritmia: distancia entre nodo 1 y nodo 1000
45
		Network net = new Network();
46
		ShortestPathSolverDijkstra solver = new ShortestPathSolverDijkstra();
47
		net.setLayer(lyr);
48
		net.setGraph(g);
49
		solver.setNetwork(net);
50
		
51
		ShortestPathSolverAStar solverAstar = new ShortestPathSolverAStar();
52
		solverAstar.setNetwork(net);
53
		
54
		try {
55

  
56
			// Primer punto
57
			net.addFlag(433647.09370, 4488029, 10);
58

  
59
			// Segundo punto
60
			net.addFlag(437290.96875, 4481547, 10);
61
			long t1 = System.currentTimeMillis();
62
			Route resul;
63
			solver.setFielStreetName("Nombre");
64
			resul = solver.calculateRoute();
65
			long t2 = System.currentTimeMillis();
66

  
67
			// assertEquals(dist.doubleValue(), 8887, 0);
68

  
69
			System.out.println("fjp dist =" + resul.getLength()
70
					+ " meters. msecs: " + (t2 - t1));
71

  
72
			t1 = System.currentTimeMillis();
73
			Route resul2;
74
			solverAstar.setFielStreetName("Nombre");
75
			resul2 = solverAstar.calculateRoute();
76
			t2 = System.currentTimeMillis();
77

  
78
			System.out.println("ASTAR dist =" + resul2.getLength()
79
					+ " meters. msecs: " + (t2 - t1));
80
			
81
			assertEquals(resul.getLength(), resul2.getLength(), 0.0);
82
			
83
			JungGraph jG = new JungGraph(g);
84
			// Probamos la algoritmia: distancia entre nodo 1 y nodo 1000
85
			DijkstraShortestPath distCalculator = new DijkstraShortestPath(jG,
86
					new EdgeWeightLabeller());
87
			FNode vOrig = jG.getVertexByID(1);
88
			FNode vEnd = jG.getVertexByID(1000);
89
			t1 = System.currentTimeMillis();
90
			Number dist = distCalculator.getDistance(vOrig, vEnd);
91
			t2 = System.currentTimeMillis();
92

  
93
			// assertEquals(dist.doubleValue(), 8887, 0);
94

  
95
			System.out
96
					.println("dist =" + dist + " meters. msecs: " + (t2 - t1));
97

  
98
			System.out.println(vOrig + " - " + vEnd);
99
			System.out.println(vOrig.getX() + ", " + vOrig.getY() + " - "
100
					+ vEnd.getX() + ", " + vEnd.getY());
101
			
102
			assertEquals(resul.getLength(), dist.doubleValue(), 0.4);
103
			
104
//			net.addTurnCost(idArcOrigin, idArcDestination, newCost);
105

  
106
		} catch (GraphException e) {
107
			// TODO Auto-generated catch block
108
			e.printStackTrace();
109
		}
110

  
111
	}
112

  
113
	/*
114
	 * Test method for
115
	 * 'org.gvsig.graph.core.NetworkLoader.loadNetwork()'
116
	 */
117
	public void DONT_TEST_testLoadNetwork() {
118
		// if (true) return;
119
		NetworkLoader netLoader = new NetworkLoader(true);
120

  
121
		DataSource dsNodes;
122
		try {
123
			dsNodes = dsf.createRandomDataSource("nodes",
124
					DataSourceFactory.MANUAL_OPENING);
125

  
126
			DataSource dsEdges = dsf.createRandomDataSource("edges",
127
					DataSourceFactory.MANUAL_OPENING);
128

  
129
			SelectableDataSource sdsNodes = new SelectableDataSource(dsNodes);
130
			SelectableDataSource sdsEdges = new SelectableDataSource(dsEdges);
131

  
132
			netLoader.setNodeReader(sdsNodes);
133
			netLoader.setEdgeReader(sdsEdges);
134

  
135
			Graph g = netLoader.loadJungNetwork();
136

  
137
			System.out.println("Num nodos=" + g.numVertices() + " numEdges = "
138
					+ g.numEdges());
139

  
140
			// Probamos la algoritmia: distancia entre nodo 1 y nodo 1000
141
			DijkstraDistance distCalculator = new DijkstraDistance(g,
142
					new EdgeWeightLabeller());
143
			ArchetypeVertex vOrig = netLoader.getIndexer().getVertex(1);
144
			ArchetypeVertex vEnd = netLoader.getIndexer().getVertex(1000);
145
			long t1 = System.currentTimeMillis();
146
			Number dist = distCalculator.getDistance(vOrig, vEnd);
147
			long t2 = System.currentTimeMillis();
148

  
149
			// assertEquals(dist.doubleValue(), 8887, 0);
150

  
151
			System.out
152
					.println("dist =" + dist + " meters. msecs: " + (t2 - t1));
153
			System.out.println(vOrig + " - " + vEnd);
154
			System.out.println(vOrig.getUserDatum("X") + ", "
155
					+ vOrig.getUserDatum("Y") + " - " + vEnd.getUserDatum("X")
156
					+ ", " + vEnd.getUserDatum("Y"));
157

  
158
		} catch (BaseException e) {
159
			// TODO Auto-generated catch block
160
			e.printStackTrace();
161
		}
162

  
163
	}
164

  
165
	protected void setUp() throws Exception {
166
		// Setup de los drivers
167
		LayerFactory
168
		.setDriversPath("../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers");
169

  
170
		// Setup del factory de DataSources
171
		dsf = LayerFactory.getDataSourceFactory();
172

  
173
		// Setup de las tablas
174
		dsf.addFileDataSource("gdbms dbf driver", "nodes", "c:/nodes.dbf");
175
		dsf.addFileDataSource("gdbms dbf driver", "edges", "c:/edges.dbf");
176

  
177
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
178
		File shpFile = new File("test_files/ejes.shp");
179
		lyr = (FLyrVect) LayerFactory.createLayer("Ejes", "gvSIG shp driver",
180
				shpFile, prj);
181

  
182
	}
183

  
184
	protected void tearDown() throws Exception {
185
		// TODO Auto-generated method stub
186
		super.tearDown();
187
	}
188

  
189
}
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestServiceAreaPolygon.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41

  
42

  
43
package com.iver.cit.gvsig.graphtests;
44

  
45
import java.io.File;
46

  
47
import junit.framework.TestCase;
48

  
49
import org.cresques.cts.IProjection;
50
import org.gvsig.exceptions.BaseException;
51
import org.gvsig.graph.core.GvFlag;
52
import org.gvsig.graph.core.IGraph;
53
import org.gvsig.graph.core.Network;
54
import org.gvsig.graph.core.loaders.NetworkRedLoader;
55
import org.gvsig.graph.solvers.CompactAreaExtractor;
56
import org.gvsig.graph.solvers.OneToManySolver;
57
import org.gvsig.graph.solvers.ServiceAreaExtractor2;
58

  
59
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
60
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
61
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
62

  
63
/**
64
 * @author fjp
65
 *
66
 * A partir de un iterador de Features (de l?neas), implementamos probamos que
67
 * podemos generar un pol?gono (si puede ser, convexo) que las
68
 * englobe todas. 
69
 */
70
public class TestServiceAreaPolygon extends TestCase {
71

  
72
	FLyrVect lyr;
73
	Network net;
74
	IGraph g;
75

  
76

  
77
	protected void setUp() throws Exception {
78
		super.setUp();
79
		// Setup de los drivers
80
		LayerFactory
81
				.setDriversPath("../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers");
82

  
83
		// Setup del factory de DataSources
84

  
85
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
86
		File shpFile = new File("test_files/ejes.shp");
87
		lyr = (FLyrVect) LayerFactory.createLayer("Ejes", "gvSIG shp driver",
88
				shpFile, prj);
89
		
90
		NetworkRedLoader netLoader = new NetworkRedLoader();
91
		netLoader.setNetFile(new File("test_files/ejes.net"));
92
		g = netLoader.loadNetwork();
93
		
94
		net = new Network();
95
	}
96

  
97
	public void testCalculate() throws BaseException {
98
		OneToManySolver solver = new OneToManySolver();
99
		net.setLayer(lyr);
100
		net.setGraph(g);
101
		solver.setNetwork(net);
102
		
103
		ServiceAreaExtractor2 extractor = new ServiceAreaExtractor2(net);
104
		solver.addListener(extractor);
105
		
106
		CompactAreaExtractor compact = new CompactAreaExtractor(net);
107
		solver.addListener(compact);
108
		//		 Source flag
109
		GvFlag sourceFlag = net.createFlag(441901, 4475977, 10);
110
		extractor.setIdFlag(0);
111
		net.addFlag(sourceFlag);
112
		solver.setSourceFlag(sourceFlag);
113

  
114
		//		 Destination flags
115
		// NONE: We will use dijkstra algorithm to label network
116
		// and extract (after) the visited arcs.
117
//		net.addFlag(441901, 4475977, 10);
118
//		net.addFlag(442830, 4476201, 200);
119
//		net.addFlag(442673, 4475125, 200);
120
		long t1 = System.currentTimeMillis();
121
		solver.putDestinationsOnNetwork(net.getFlags());
122
		solver.setExploreAllNetwork(true);
123
		solver.setMaxDistance(1000.0);
124
		double[] costs = {500.0, 1000.0};
125
		extractor.setCosts(costs);
126
		solver.calculate();
127

  
128
		extractor.writeServiceArea();
129
		extractor.closeFiles();
130
		solver.removeDestinationsFromNetwork(net.getFlags());
131
		
132
		compact.writeServiceArea();
133
		compact.closeFiles();
134
		
135
		long t2 = System.currentTimeMillis();
136
		System.out.println("tiempo:" + (t2-t1));
137
		
138
		// assertEquals(dist.doubleValue(), 8887, 0);
139

  
140
		
141
		
142

  
143

  
144
	}
145

  
146
}
0 147

  
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestReverseOneToMany.java
1
package com.iver.cit.gvsig.graphtests;
2

  
3
import java.io.File;
4

  
5
import junit.framework.TestCase;
6

  
7
import org.cresques.cts.IProjection;
8
import org.gvsig.graph.core.GraphException;
9
import org.gvsig.graph.core.GvFlag;
10
import org.gvsig.graph.core.IGraph;
11
import org.gvsig.graph.core.Network;
12
import org.gvsig.graph.core.loaders.NetworkRedLoader;
13
import org.gvsig.graph.solvers.ReverseOneToManySolver;
14

  
15
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
16
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
17
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
18

  
19
public class TestReverseOneToMany extends TestCase {
20

  
21
	FLyrVect lyr;
22
	Network net;
23
	IGraph g;
24

  
25

  
26
	protected void setUp() throws Exception {
27
		super.setUp();
28
		// Setup de los drivers
29
		LayerFactory
30
		.setDriversPath("../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers");
31

  
32
		// Setup del factory de DataSources
33

  
34
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
35
		File shpFile = new File("test_files/ejes.shp");
36
		lyr = (FLyrVect) LayerFactory.createLayer("Ejes", "gvSIG shp driver",
37
				shpFile, prj);
38
		
39
		NetworkRedLoader netLoader = new NetworkRedLoader();
40
		netLoader.setNetFile(new File("test_files/ejes.net"));
41
		g = netLoader.loadNetwork();
42
		
43
		net = new Network();
44
		
45
		
46
		
47
		
48
		
49
		
50
		
51
	}
52

  
53
	public void testCalculate() throws GraphException {
54
		ReverseOneToManySolver solver = new ReverseOneToManySolver();
55
		net.setLayer(lyr);
56
		net.setGraph(g);
57
		solver.setNetwork(net);
58
		
59
		//		 Source flag
60
		GvFlag sourceFlag = net.createFlag(441901, 4475977, 10);
61
		solver.setSourceFlag(sourceFlag);
62

  
63
		//		 Destination flags
64
		net.addFlag(441901, 4475977, 10);
65
		net.addFlag(442830, 4476201, 200);
66
		net.addFlag(442673, 4475125, 200);
67
		long t1 = System.currentTimeMillis();
68
		solver.putDestinationsOnNetwork(net.getFlags());
69
		solver.calculate();
70
		solver.removeDestinationsFromNetwork(net.getFlags());
71
		long t2 = System.currentTimeMillis();
72
		System.out.println("tiempo:" + (t2-t1));
73
		
74
		GvFlag flags[] = net.getFlags();
75

  
76
		for (int i=0; i < flags.length; i++)
77
		{
78
			System.out.println("Flag " + i + " " + flags[i].getCost());
79
		}
80
		// assertEquals(dist.doubleValue(), 8887, 0);
81

  
82
		
83
		
84

  
85

  
86
	}
87

  
88
}
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestArrayVsHashSet.java
1
package com.iver.cit.gvsig.graphtests;
2

  
3
import java.util.ArrayList;
4
import java.util.Collection;
5
import java.util.HashSet;
6
import java.util.Random;
7

  
8
import junit.framework.TestCase;
9

  
10
/**
11
 * @author Francisco Jos? Pe?arrubia (fjp@scolab.es)
12
 *
13
 * Working with arrays is 4 times faster (inserting) than hashsets, and consumes twice less memory
14
 */
15
public class TestArrayVsHashSet extends TestCase {
16

  
17
	private void runGC () throws Exception
18
    {
19
        // It helps to call Runtime.gc()
20
        // using several method calls:
21
        for (int r = 0; r < 4; ++ r) _runGC ();
22
    }
23
    private void _runGC () throws Exception
24
    {
25
        long usedMem1 = usedMemory (), usedMem2 = Long.MAX_VALUE;
26
        for (int i = 0; (usedMem1 < usedMem2) && (i < 500); ++ i)
27
        {
28
            s_runtime.runFinalization ();
29
            s_runtime.gc ();
30
            Thread.currentThread ().yield ();
31
            
32
            usedMem2 = usedMem1;
33
            usedMem1 = usedMemory ();
34
        }
35
    }
36
    private long usedMemory ()
37
    {
38
        return s_runtime.totalMemory () - s_runtime.freeMemory ();
39
    }
40
    
41
    private static final Runtime s_runtime = Runtime.getRuntime ();
42

  
43

  
44
    private void test(Collection lst) {
45
    	long t1 = System.currentTimeMillis();
46
		Random rnd = new Random();
47
		long mem1 = usedMemory();
48
		for (int i = 0; i < 1000000; i++) {
49
			Integer aux = rnd.nextInt();
50
			lst.add(aux);
51
		}
52
		long mem2 = usedMemory();
53
		long t2 = System.currentTimeMillis();
54
		
55
		System.out.println("load " + lst.getClass().getCanonicalName() + " msecs: " + (t2 - t1) + " memUsed:"
56
				+ ((mem2 - mem1) / 1024) + "K");
57

  
58

  
59
    }
60
    
61
    public void testArray() {
62
		try {
63
			runGC();
64
			ArrayList array = new ArrayList();
65
			test(array);
66
		} catch (Exception e) {
67
			// TODO Auto-generated catch block
68
			e.printStackTrace();
69
		}
70

  
71
	}
72

  
73
	public void testHashSet() {
74
		try {
75
			runGC();
76
			
77
			HashSet<Integer> set = new HashSet<Integer>();
78
			test(set);
79
		} catch (Exception e) {
80
			// TODO Auto-generated catch block
81
			e.printStackTrace();
82
		}
83

  
84
	}
85

  
86
	protected void setUp() throws Exception {
87

  
88
	}
89

  
90
}
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestOneToMany.java
1
package com.iver.cit.gvsig.graphtests;
2

  
3
import java.io.File;
4

  
5
import junit.framework.TestCase;
6

  
7
import org.cresques.cts.IProjection;
8
import org.gvsig.graph.core.GraphException;
9
import org.gvsig.graph.core.GvFlag;
10
import org.gvsig.graph.core.IGraph;
11
import org.gvsig.graph.core.Network;
12
import org.gvsig.graph.core.loaders.NetworkRedLoader;
13
import org.gvsig.graph.solvers.OneToManySolver;
14

  
15
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
16
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
17
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
18

  
19
public class TestOneToMany extends TestCase {
20

  
21
	FLyrVect lyr;
22
	Network net;
23
	IGraph g;
24

  
25

  
26
	protected void setUp() throws Exception {
27
		super.setUp();
28
		// Setup de los drivers
29
		LayerFactory
30
		.setDriversPath("../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers");
31

  
32
		// Setup del factory de DataSources
33

  
34
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
35
		File shpFile = new File("test_files/ejes.shp");
36
		lyr = (FLyrVect) LayerFactory.createLayer("Ejes", "gvSIG shp driver",
37
				shpFile, prj);
38
		
39
		NetworkRedLoader netLoader = new NetworkRedLoader();
40
		netLoader.setNetFile(new File("test_files/ejes.net"));
41
		g = netLoader.loadNetwork();
42
		
43
		net = new Network();
44
		
45
		
46
		
47
		
48
		
49
		
50
		
51
	}
52

  
53
	public void testCalculate() throws GraphException {
54
		OneToManySolver solver = new OneToManySolver();
55
		net.setLayer(lyr);
56
		net.setGraph(g);
57
		solver.setNetwork(net);
58
		
59
		//		 Source flag
60
		GvFlag sourceFlag = net.createFlag(441901, 4475977, 10);
61
		solver.setSourceFlag(sourceFlag);
62

  
63
		//		 Destination flags
64
		net.addFlag(441901, 4475977, 10);
65
		net.addFlag(442830, 4476201, 200);
66
		net.addFlag(442673, 4475125, 200);
67
		long t1 = System.currentTimeMillis();
68
		solver.putDestinationsOnNetwork(net.getFlags());
69
		solver.calculate();
70
		solver.removeDestinationsFromNetwork(net.getFlags());
71
		long t2 = System.currentTimeMillis();
72
		System.out.println("tiempo:" + (t2-t1));
73
		
74
		GvFlag flags[] = net.getFlags();
75

  
76
		for (int i=0; i < flags.length; i++)
77
		{
78
			System.out.println("Flag " + i + " " + flags[i].getCost());
79
		}
80
		// assertEquals(dist.doubleValue(), 8887, 0);
81

  
82
		
83
		
84

  
85

  
86
	}
87

  
88
}
0 89

  
trunk/extensions/extGraph/extGraph/src-test/com/iver/cit/gvsig/graphtests/TestCreatePolygon.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22

  
23
/*
24
* AUTHORS (In addition to CIT):
25
* 2008 {{Company}}   {{Task}}
26
*/
27
 
28
package com.iver.cit.gvsig.graphtests;
29

  
30
import java.io.File;
31
import java.util.Collection;
32

  
33
import junit.framework.TestCase;
34

  
35
import org.cresques.cts.IProjection;
36
import org.gvsig.exceptions.BaseException;
37
import org.gvsig.fmap.algorithm.contouring.LoopRemover;
38

  
39
import com.iver.cit.gvsig.fmap.core.IFeature;
40
import com.iver.cit.gvsig.fmap.core.IGeometry;
41
import com.iver.cit.gvsig.fmap.crs.CRSFactory;
42
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
43
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
44
import com.iver.cit.gvsig.fmap.layers.ReadableVectorial;
45
import com.vividsolutions.jts.geom.Geometry;
46
import com.vividsolutions.jts.geom.Polygon;
47
import com.vividsolutions.jts.operation.linemerge.LineSequencer;
48
import com.vividsolutions.jts.operation.polygonize.Polygonizer;
49

  
50
public class TestCreatePolygon extends TestCase {
51

  
52
	FLyrVect lyr;
53

  
54
	protected void setUp() throws Exception {
55
		super.setUp();
56
		// Setup de los drivers
57
		LayerFactory
58
				.setDriversPath("../_fwAndami/gvSIG/extensiones/com.iver.cit.gvsig/drivers");
59

  
60
		// Setup del factory de DataSources
61

  
62
		IProjection prj = CRSFactory.getCRS("EPSG:23030");
63
		File shpFile = new File("test_files/contour3.shp");
64
		lyr = (FLyrVect) LayerFactory.createLayer("Contour", "gvSIG shp driver",
65
				shpFile, prj);
66
		
67
	}
68

  
69
	public void testCalculatePolygon() throws BaseException {
70

  
71
		ReadableVectorial rv = lyr.getSource();
72
		
73
		long t1 = System.currentTimeMillis();
74
		LoopRemover sequencer = new LoopRemover();
75
		Polygonizer pol = new Polygonizer();
76
		rv.start();
77
		for (int i=0; i < rv.getShapeCount(); i++) {
78
			IFeature feat = rv.getFeature(i);
79
			IGeometry geom = feat.getGeometry();
80
			Geometry jtsGeom = geom.toJTSGeometry();
81
			sequencer.add(jtsGeom);
82
			pol.add(jtsGeom);
83
//			if (jtsGeom instanceof LineString)
84
//			{
85
//				LineString lineString = (LineString) jtsGeom;
86
//				graph.addEdge(lineString);
87
//			}
88
		}
89
		rv.stop();
90
		
91
//		Iterator it = graph.edgeIterator();
92
//		while (it.hasNext()) {
93
//			Edge edge = (Edge) it.next();
94
//			edge.
95
//		}
96
		Collection<Polygon> polygons = pol.getPolygons();
97
		
98
		for (Polygon p : polygons) {
99
			System.out.println(p.toText());
100
		}
101
		
102
		Geometry newJtsGeom = sequencer.getSequencedLineStrings();
103
		System.out.println(newJtsGeom.toText());
104
		long t2 = System.currentTimeMillis();
105
		System.out.println("tiempo:" + (t2-t1));
106
		
107
		// assertEquals(dist.doubleValue(), 8887, 0);
108

  
109
		
110
		
111

  
112

  
113
	}
114
//	public void testCalculateContour() throws BaseException {
115
//
116
//		ReadableVectorial rv = lyr.getSource();
117
//		
118
//		long t1 = System.currentTimeMillis();
119
////		WatsonTriangulator triangulator = new WatsonTriangulator();
120
////		ChewTriangulator triangulator = new ChewTriangulator();
121
//		FJenettTriangulator triangulator = new FJenettTriangulator();
122
//		rv.start();
123
//		for (int i=0; i < rv.getShapeCount(); i++) {
124
//			IFeature feat = rv.getFeature(i);
125
//			IGeometry geom = feat.getGeometry();
126
//			Object shp = geom.getInternalShape();
127
//			if (shp instanceof FPoint2D)
128
//			{
129
//				FPoint2D p = (FPoint2D) geom.getInternalShape();
130
//				// 	Leer la Z para hacer el contour. Para la trianqulaci?n no hace falta.
131
//				triangulator.addVertex(new Vertex(p.getX(), p.getY()));
132
//			}
133
//			if (shp instanceof FMultiPoint2D)
134
//			{
135
//				FMultiPoint2D multi = (FMultiPoint2D) shp;
136
//				for (int j=0; j < multi.getNumPoints(); j++) {
137
//					FPoint2D p = multi.getPoint(j);
138
//					NumericValue val = (NumericValue) feat.getAttribute(0);
139
//					triangulator.addVertex(new Vertex(p.getX(), p.getY(), val.doubleValue()));
140
//				}
141
//			}
142
//			
143
//		}
144
//		rv.stop();
145
//		
146
//		TIN tin = triangulator.calculateTriangulation();
147
//		ContourCalculator contourCalculator = new ContourCalculator(tin);
148
//		Collection<LineString> contour = contourCalculator.getContour(4.7);
149
//		System.out.println("Contour = " + contour.toString());
150
//		
151
//		Collection<LineString> contour2 = contourCalculator.getContour_Complex_BAD(4.7);
152
//		System.out.println("Contour2 = " + contour2.toString());
153
//		
154
//		List <Triangle> triangles = triangulator.getTriangles();
155
//		
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff