From c6fed3d5bbe052744eaeb6285825f0a63f1ce024 Mon Sep 17 00:00:00 2001 From: Arndt Date: Sat, 7 Feb 2015 10:28:53 +0100 Subject: [PATCH] changed alternative logic to not crosstalk over --- .../java/btools/router/RoutingEngine.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/brouter-core/src/main/java/btools/router/RoutingEngine.java b/brouter-core/src/main/java/btools/router/RoutingEngine.java index 72c644b..277ffe3 100644 --- a/brouter-core/src/main/java/btools/router/RoutingEngine.java +++ b/brouter-core/src/main/java/btools/router/RoutingEngine.java @@ -133,12 +133,14 @@ public class RoutingEngine extends Thread startTime = System.currentTimeMillis(); this.maxRunningTime = maxRunningTime; - OsmTrack sum = null; + int nsections = waypoints.size() - 1; + OsmTrack[] refTracks = new OsmTrack[nsections]; // used ways for alternatives + OsmTrack[] lastTracks = new OsmTrack[nsections]; OsmTrack track = null; ArrayList messageList = new ArrayList(); for( int i=0; !terminated; i++ ) { - track = findTrack( sum ); + track = findTrack( refTracks, lastTracks ); track.message = "track-length = " + track.distance + " filtered ascend = " + track.ascend + " plain-ascend = " + track.plainAscend + " cost=" + track.cost; track.name = "brouter_" + routingContext.getProfileName() + "_" + i; @@ -152,8 +154,6 @@ public class RoutingEngine extends Thread oldTrack.readGpx(filename); if ( track.equalsTrack( oldTrack ) ) { - if ( sum == null ) sum = new OsmTrack(); - sum.addNodes( track ); continue; } track.writeGpx( filename ); @@ -179,8 +179,6 @@ public class RoutingEngine extends Thread } else { - if ( sum == null ) sum = new OsmTrack(); - sum.addNodes( track ); continue; } } @@ -240,14 +238,14 @@ public class RoutingEngine extends Thread - private OsmTrack findTrack( OsmTrack refTrack ) + private OsmTrack findTrack( OsmTrack[] refTracks, OsmTrack[] lastTracks ) { OsmTrack totaltrack = new OsmTrack(); MatchedWaypoint[] wayointIds = new MatchedWaypoint[waypoints.size()]; // check for a track for that target OsmTrack nearbyTrack = null; - if ( refTrack == null ) + if ( refTracks[waypoints.size()-2] == null ) { nearbyTrack = OsmTrack.readBinary( routingContext.rawTrackPath, waypoints.get( waypoints.size()-1), routingContext.getNogoChecksums() ); if ( nearbyTrack != null ) @@ -267,9 +265,16 @@ public class RoutingEngine extends Thread for( int i=0; i