traffic simulation delta supression
This commit is contained in:
parent
d29581694e
commit
6fd1c6151d
1 changed files with 28 additions and 9 deletions
|
@ -36,12 +36,16 @@ public class OsmTrafficMap
|
||||||
private File oldTrafficFile;
|
private File oldTrafficFile;
|
||||||
private File newTrafficFile;
|
private File newTrafficFile;
|
||||||
|
|
||||||
int totalChanges = 0;
|
private int totalChanges = 0;
|
||||||
int supressedChanges = 0;
|
private int supressedChanges = 0;
|
||||||
|
|
||||||
|
private boolean doNotAdd = false;
|
||||||
|
private boolean debug = false;
|
||||||
|
|
||||||
public OsmTrafficMap( BExpressionContextWay expctxWay )
|
public OsmTrafficMap( BExpressionContextWay expctxWay )
|
||||||
{
|
{
|
||||||
this.expctxWay = expctxWay;
|
this.expctxWay = expctxWay;
|
||||||
|
debug = Boolean.getBoolean( "debugTrafficMap" );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class OsmTrafficElement
|
public static class OsmTrafficElement
|
||||||
|
@ -62,6 +66,7 @@ public class OsmTrafficMap
|
||||||
if ( oldTrafficFile.exists() )
|
if ( oldTrafficFile.exists() )
|
||||||
{
|
{
|
||||||
oldTrafficClasses = new OsmTrafficMap( null );
|
oldTrafficClasses = new OsmTrafficMap( null );
|
||||||
|
oldTrafficClasses.doNotAdd = true;
|
||||||
oldTrafficClasses.load( oldTrafficFile, minLon, minLat, maxLon, maxLat, false );
|
oldTrafficClasses.load( oldTrafficFile, minLon, minLat, maxLon, maxLat, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +148,14 @@ public class OsmTrafficMap
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if ( doNotAdd )
|
||||||
|
{
|
||||||
|
e.traffic = Math.max( e.traffic, traffic );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
e.traffic = e.traffic == -1 || traffic == -1 ? -1 : e.traffic + traffic;
|
e.traffic = e.traffic == -1 || traffic == -1 ? -1 : e.traffic + traffic;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,8 +169,9 @@ public class OsmTrafficMap
|
||||||
|
|
||||||
public int getTrafficClass( long n1, long n2 )
|
public int getTrafficClass( long n1, long n2 )
|
||||||
{
|
{
|
||||||
int traffic = getTraffic( n1, n2 );
|
// used for the old data, where we stpre traffic-classes, not volumes
|
||||||
return getTrafficClassForTraffic( traffic );
|
OsmTrafficElement e = getElement( n1, n2 );
|
||||||
|
return e == null ? 0 : e.traffic;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTrafficClassForTraffic( int traffic )
|
public int getTrafficClassForTraffic( int traffic )
|
||||||
|
@ -234,13 +247,19 @@ public class OsmTrafficMap
|
||||||
// delta suppression: keep old traffic classes within some buffer range
|
// delta suppression: keep old traffic classes within some buffer range
|
||||||
if ( oldTrafficClasses != null )
|
if ( oldTrafficClasses != null )
|
||||||
{
|
{
|
||||||
int oldTrafficClass = oldTrafficClasses.getTraffic( id0, id1 );
|
int oldTrafficClass = oldTrafficClasses.getTrafficClass( id0, id1 );
|
||||||
if ( oldTrafficClass != trafficClass )
|
if ( oldTrafficClass != trafficClass )
|
||||||
{
|
{
|
||||||
totalChanges++;
|
totalChanges++;
|
||||||
|
boolean supressChange =
|
||||||
|
oldTrafficClass == getTrafficClassForTraffic( (int)(traffic*1.3) )
|
||||||
|
|| oldTrafficClass == getTrafficClassForTraffic( (int)(traffic*0.77) );
|
||||||
|
|
||||||
if ( oldTrafficClass == getTrafficClassForTraffic( (int)(traffic*1.3) )
|
if ( debug )
|
||||||
|| oldTrafficClass == getTrafficClassForTraffic( (int)(traffic*0.77) ) )
|
{
|
||||||
|
System.out.println( "traffic class change " + oldTrafficClass + "->" + trafficClass + " supress=" + supressChange );
|
||||||
|
}
|
||||||
|
if ( supressChange )
|
||||||
{
|
{
|
||||||
trafficClass = oldTrafficClass;
|
trafficClass = oldTrafficClass;
|
||||||
supressedChanges++;
|
supressedChanges++;
|
||||||
|
|
Loading…
Reference in a new issue