Revision 30840 trunk/extensions/extGraph/src/org/gvsig/graph/solvers/AbstractShortestPathSolver.java
AbstractShortestPathSolver.java | ||
---|---|---|
42 | 42 |
import org.gvsig.graph.core.Network; |
43 | 43 |
import org.gvsig.graph.core.NetworkUtils; |
44 | 44 |
|
45 |
import com.hardcode.gdbms.engine.values.Value; |
|
45 | 46 |
import com.iver.cit.gvsig.fmap.core.IFeature; |
46 | 47 |
import com.iver.cit.gvsig.fmap.core.IGeometry; |
47 | 48 |
import com.iver.cit.gvsig.fmap.core.v02.FConverter; |
... | ... | |
171 | 172 |
// Si no, hemos pasado por idStop2 y la parte que hay que meter es desde el pto interior a idStop2 |
172 | 173 |
/////////////////////////////////////////////////////////////////////////////////////// |
173 | 174 |
// IFeature feat = va.getFeature(finalEdge.getIdArc()); |
174 |
IFeature feat = featExtractor.getFeature(finalEdge.getIdArc()); |
|
175 |
IGeometry g = featExtractor.getGeometry(finalEdge.getIdArc()); |
|
176 |
Value nameStreet = featExtractor.getFieldValue(finalEdge.getIdArc(), getFieldIndexStreetName()); |
|
175 | 177 |
|
176 |
MultiLineString jtsGeom = (MultiLineString) feat.getGeometry().toJTSGeometry();
|
|
178 |
MultiLineString jtsGeom = (MultiLineString) g.toJTSGeometry();
|
|
177 | 179 |
// CoordinateFilter removeDuplicates = new UniqueCoordinateArrayFilter(); |
178 | 180 |
// jtsGeom.apply(removeDuplicates); |
179 | 181 |
// jtsGeom.geometryChanged(); |
... | ... | |
211 | 213 |
// TODO: Calcular bien el length de este arco, |
212 | 214 |
// basandonos en el porcentaje costeTramoFinal / costeOriginal |
213 | 215 |
route.addRouteFeature(geom, origin.getIdArc(), |
214 |
costeTramoFinal, line.getLength(), feat.getAttribute(getFieldIndexStreetName()).toString());
|
|
216 |
costeTramoFinal, line.getLength(), nameStreet.toString());
|
|
215 | 217 |
|
216 | 218 |
|
217 | 219 |
return ; // Deber?a sacar el coste |
... | ... | |
223 | 225 |
pNodo = graph.getNodeByID(idEnd); |
224 | 226 |
|
225 | 227 |
from_link = pNodo.get_best_from_link(); |
228 |
|
|
229 |
long t1 = System.currentTimeMillis(); |
|
226 | 230 |
|
227 | 231 |
while ((pNodo.getIdNode() != idStart)) |
228 | 232 |
{ |
... | ... | |
286 | 290 |
if (pNodo.getIdNode() != idStart) |
287 | 291 |
from_link = pNodo.get_from_link(idEnlace); |
288 | 292 |
} |
293 |
long t2 = System.currentTimeMillis(); |
|
294 |
System.out.println("T populate 1 = " + (t2-t1)); |
|
289 | 295 |
|
290 | 296 |
// Y ahora recorremos hacia atr?s el vector y escribimos los shapes. |
291 | 297 |
// VECTORINFO::iterator theIterator; |
292 | 298 |
int auxC = 0; |
293 | 299 |
|
300 |
t1 = System.currentTimeMillis(); |
|
301 |
|
|
294 | 302 |
while (!pilaShapes.empty()) |
295 | 303 |
{ |
296 | 304 |
infoShp = (InfoShp) pilaShapes.peek(); |
297 |
// feat = va.getFeature(infoShp.idArc); |
|
298 |
feat = featExtractor.getFeature(infoShp.idArc); |
|
299 |
MultiLineString line = (MultiLineString) feat.getGeometry().toJTSGeometry(); |
|
300 |
// line.apply(removeDuplicates); |
|
301 |
// line.geometryChanged(); |
|
305 |
g = featExtractor.getGeometry(infoShp.idArc); |
|
306 |
nameStreet = featExtractor.getFieldValue(infoShp.idArc, getFieldIndexStreetName()); |
|
307 |
|
|
308 |
MultiLineString line = (MultiLineString) g.toJTSGeometry(); |
|
302 | 309 |
|
303 | 310 |
LineString aux = null; |
304 | 311 |
if (infoShp.pct < 1.0) |
... | ... | |
320 | 327 |
geom = FConverter.jts_to_igeometry(aux); |
321 | 328 |
} |
322 | 329 |
|
323 |
|
|
324 | 330 |
route.addRouteFeature(geom, infoShp.idArc, |
325 |
infoShp.cost, infoShp.distance, feat.getAttribute(getFieldIndexStreetName()).toString());
|
|
331 |
infoShp.cost, infoShp.distance, nameStreet.toString());
|
|
326 | 332 |
|
327 | 333 |
|
328 | 334 |
pilaShapes.pop(); |
329 | 335 |
auxC++; |
330 | 336 |
|
331 | 337 |
} |
332 |
|
|
338 |
t2 = System.currentTimeMillis(); |
|
339 |
System.out.println("T populate 2 = " + (t2-t1)); |
|
333 | 340 |
return; |
334 | 341 |
|
335 | 342 |
|
Also available in: Unified diff