changed alternative logic to not crosstalk over
This commit is contained in:
parent
afc0d765d0
commit
c6fed3d5bb
1 changed files with 14 additions and 9 deletions
|
@ -133,12 +133,14 @@ public class RoutingEngine extends Thread
|
||||||
|
|
||||||
startTime = System.currentTimeMillis();
|
startTime = System.currentTimeMillis();
|
||||||
this.maxRunningTime = maxRunningTime;
|
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;
|
OsmTrack track = null;
|
||||||
ArrayList<String> messageList = new ArrayList<String>();
|
ArrayList<String> messageList = new ArrayList<String>();
|
||||||
for( int i=0; !terminated; i++ )
|
for( int i=0; !terminated; i++ )
|
||||||
{
|
{
|
||||||
track = findTrack( sum );
|
track = findTrack( refTracks, lastTracks );
|
||||||
track.message = "track-length = " + track.distance + " filtered ascend = " + track.ascend
|
track.message = "track-length = " + track.distance + " filtered ascend = " + track.ascend
|
||||||
+ " plain-ascend = " + track.plainAscend + " cost=" + track.cost;
|
+ " plain-ascend = " + track.plainAscend + " cost=" + track.cost;
|
||||||
track.name = "brouter_" + routingContext.getProfileName() + "_" + i;
|
track.name = "brouter_" + routingContext.getProfileName() + "_" + i;
|
||||||
|
@ -152,8 +154,6 @@ public class RoutingEngine extends Thread
|
||||||
oldTrack.readGpx(filename);
|
oldTrack.readGpx(filename);
|
||||||
if ( track.equalsTrack( oldTrack ) )
|
if ( track.equalsTrack( oldTrack ) )
|
||||||
{
|
{
|
||||||
if ( sum == null ) sum = new OsmTrack();
|
|
||||||
sum.addNodes( track );
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
track.writeGpx( filename );
|
track.writeGpx( filename );
|
||||||
|
@ -179,8 +179,6 @@ public class RoutingEngine extends Thread
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( sum == null ) sum = new OsmTrack();
|
|
||||||
sum.addNodes( track );
|
|
||||||
continue;
|
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();
|
OsmTrack totaltrack = new OsmTrack();
|
||||||
MatchedWaypoint[] wayointIds = new MatchedWaypoint[waypoints.size()];
|
MatchedWaypoint[] wayointIds = new MatchedWaypoint[waypoints.size()];
|
||||||
|
|
||||||
// check for a track for that target
|
// check for a track for that target
|
||||||
OsmTrack nearbyTrack = null;
|
OsmTrack nearbyTrack = null;
|
||||||
if ( refTrack == null )
|
if ( refTracks[waypoints.size()-2] == null )
|
||||||
{
|
{
|
||||||
nearbyTrack = OsmTrack.readBinary( routingContext.rawTrackPath, waypoints.get( waypoints.size()-1), routingContext.getNogoChecksums() );
|
nearbyTrack = OsmTrack.readBinary( routingContext.rawTrackPath, waypoints.get( waypoints.size()-1), routingContext.getNogoChecksums() );
|
||||||
if ( nearbyTrack != null )
|
if ( nearbyTrack != null )
|
||||||
|
@ -267,9 +265,16 @@ public class RoutingEngine extends Thread
|
||||||
|
|
||||||
for( int i=0; i<waypoints.size() -1; i++ )
|
for( int i=0; i<waypoints.size() -1; i++ )
|
||||||
{
|
{
|
||||||
OsmTrack seg = searchTrack( wayointIds[i], wayointIds[i+1], i == waypoints.size()-2 ? nearbyTrack : null, refTrack );
|
if ( lastTracks[i] != null )
|
||||||
|
{
|
||||||
|
if ( refTracks[i] == null ) refTracks[i] = new OsmTrack();
|
||||||
|
refTracks[i].addNodes( lastTracks[i] );
|
||||||
|
}
|
||||||
|
|
||||||
|
OsmTrack seg = searchTrack( wayointIds[i], wayointIds[i+1], i == waypoints.size()-2 ? nearbyTrack : null, refTracks[i] );
|
||||||
if ( seg == null ) return null;
|
if ( seg == null ) return null;
|
||||||
totaltrack.appendTrack( seg );
|
totaltrack.appendTrack( seg );
|
||||||
|
lastTracks[i] = seg;
|
||||||
}
|
}
|
||||||
return totaltrack;
|
return totaltrack;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue