Revision 31856
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 |
// |
Also available in: Unified diff