inverse mode, fixed false-positive bug
This commit is contained in:
parent
10931da3a7
commit
aecb3f3707
5 changed files with 67 additions and 3 deletions
|
@ -481,7 +481,7 @@ System.out.println( "bad TR candidate: " + id );
|
|||
double targetCost = processTargetNode( rc );
|
||||
if ( targetCost < 0. || targetCost + cost >= 2000000000. )
|
||||
{
|
||||
if ( rc.suspectNodes != null && priorityclassifier > 20 && !rc.inverseDirection )
|
||||
if ( rc.suspectNodes != null && priorityclassifier > 20 && rc.inverseDirection == rc.inverseRouting )
|
||||
{
|
||||
rc.foundNodeBlock = true;
|
||||
Long id = Long.valueOf( targetNode.getIdFromPos() );
|
||||
|
|
|
@ -169,7 +169,7 @@ public final class RoutingContext
|
|||
trafficSourceMinDist = expctxGlobal.getVariableValue( "trafficSourceMinDist", 3000.f );
|
||||
|
||||
showspeed = 0.f != expctxGlobal.getVariableValue( "showspeed", 0.f );
|
||||
inverseRouting = 0.f != expctxGlobal.getVariableValue( "inverseRouting", 0.f );
|
||||
inverseRouting = 0.f != expctxGlobal.getVariableValue( "inverseRouting", inverseRouting ? 1.f : 0.f );
|
||||
|
||||
int tiMode = (int)expctxGlobal.getVariableValue( "turnInstructionMode", 0.f );
|
||||
if ( tiMode != 1 ) // automatic selection from coordinate source
|
||||
|
|
|
@ -1017,6 +1017,7 @@ public class RoutingEngine extends Thread
|
|||
|
||||
if ( ! nodesCache.obtainNonHollowNode( nextNode ) )
|
||||
{
|
||||
nPathPossible++;
|
||||
continue; // border node?
|
||||
}
|
||||
if ( nextNode == sourceNode )
|
||||
|
@ -1034,6 +1035,7 @@ public class RoutingEngine extends Thread
|
|||
int gidx = path.treedepth + 1;
|
||||
if ( gidx >= guideTrack.nodes.size() )
|
||||
{
|
||||
nPathPossible++;
|
||||
continue;
|
||||
}
|
||||
OsmPathElement guideNode = guideTrack.nodes.get( routingContext.inverseRouting ? guideTrack.nodes.size() - 1 - gidx : gidx );
|
||||
|
@ -1130,7 +1132,7 @@ public class RoutingEngine extends Thread
|
|||
}
|
||||
|
||||
// report oneway dead-ends as suspects
|
||||
if ( routingContext.suspectNodes != null && path.priorityclassifier > 20 && currentNode.virgin && path.cost > 2000 && !routingContext.inverseDirection )
|
||||
if ( routingContext.suspectNodes != null && path.priorityclassifier > 20 && currentNode.virgin && path.cost > 2000 && routingContext.inverseDirection == routingContext.inverseRouting && guideTrack == null )
|
||||
{
|
||||
int suspectPrio = 0;
|
||||
if ( nPathPossible == 0 && (!routingContext.foundNodeBlock) )
|
||||
|
|
|
@ -71,6 +71,7 @@ public class BadTRDetector
|
|||
else
|
||||
{
|
||||
rc.suspectNodes = suspectTRs;
|
||||
rc.inverseRouting = rand.nextBoolean();
|
||||
}
|
||||
|
||||
RoutingEngine re = new RoutingEngine( "mytrack", "mylog", args[0], wplist, rc );
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
package btools.server;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
|
||||
|
||||
public class IssueArchiver
|
||||
{
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
if ( args.length < 2 )
|
||||
{
|
||||
System.out.println( "usage : IssueArchiver <suspect-dir> <suspect-archive>" );
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
File suspectDir = new File( args[0] );
|
||||
if ( !suspectDir.isDirectory() )
|
||||
{
|
||||
throw new IllegalArgumentException( "not a directory: " + suspectDir );
|
||||
}
|
||||
File suspectArchive = new File( args[1] );
|
||||
if ( !suspectArchive.isDirectory() )
|
||||
{
|
||||
throw new IllegalArgumentException( "not a directory: " + suspectArchive );
|
||||
}
|
||||
|
||||
File[] files = suspectDir.listFiles();
|
||||
for ( File f : files )
|
||||
{
|
||||
String name = f.getName();
|
||||
if ( name.startsWith( "suspects_" ) && name.endsWith( ".txt" ) )
|
||||
{
|
||||
BufferedReader br = new BufferedReader( new FileReader( f ) );
|
||||
for(;;)
|
||||
{
|
||||
String line = br.readLine();
|
||||
if ( line == null ) break;
|
||||
StringTokenizer tk = new StringTokenizer( line );
|
||||
long id = Long.parseLong( tk.nextToken() );
|
||||
int prio = Integer.parseInt( tk.nextToken() );
|
||||
|
||||
File archiveEntry = new File( suspectArchive, "" + id );
|
||||
if ( !archiveEntry.exists() )
|
||||
{
|
||||
archiveEntry.createNewFile();
|
||||
}
|
||||
}
|
||||
br.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue