minor changes to route energy + trackname+param

This commit is contained in:
Arndt Brenschede 2018-12-12 23:18:05 +01:00
parent a5799d7253
commit 46c114ba1e
2 changed files with 9 additions and 8 deletions

View file

@ -243,21 +243,16 @@ final class StdPath extends OsmPath
double incline = calcIncline( dist ); double incline = calcIncline( dist );
double speed; // Travel speed double speed; // Travel speed
double energy; double f_roll = rc.totalMass * GRAVITY * ( rc.defaultC_r + incline );
if (rc.footMode || rc.expctxWay.getCostfactor() > 5) if (rc.footMode || rc.expctxWay.getCostfactor() > 5)
{ {
// Use Tobler's hiking function for walking sections // Use Tobler's hiking function for walking sections
speed = 6 * exp(-3.5 * Math.abs( incline + 0.05)) / 3.6; speed = 6 * exp(-3.5 * Math.abs( incline + 0.05)) / 3.6;
energy = rc.totalMass * GRAVITY * incline * dist;
} }
else if (rc.bikeMode) else if (rc.bikeMode)
{ {
double f_roll = rc.totalMass * GRAVITY * ( rc.defaultC_r + incline );
speed = solveCubic( rc.S_C_x, f_roll, rc.bikerPower ); speed = solveCubic( rc.S_C_x, f_roll, rc.bikerPower );
speed = Math.min(speed, rc.maxSpeed); speed = Math.min(speed, rc.maxSpeed);
// Don't compute energy assuming constant biker power, as speed is capped
// to a max value.
energy = dist*(rc.S_C_x*speed*speed + f_roll);
} }
else else
{ {
@ -265,8 +260,14 @@ final class StdPath extends OsmPath
} }
float dt = (float) ( dist / speed ); float dt = (float) ( dist / speed );
totalTime += dt; totalTime += dt;
// Calc energy assuming biking (no good model yet for hiking)
// (Count only positive, negative would mean breaking to enforce maxspeed)
double energy = dist*(rc.S_C_x*speed*speed + f_roll);
if ( energy > 0. )
{
totalEnergy += energy; totalEnergy += energy;
} }
}
private static double solveCubic( double a, double c, double d ) private static double solveCubic( double a, double c, double d )
{ {

View file

@ -113,7 +113,7 @@ public class ServerHandler extends RequestHandler {
String result; String result;
// optional, may be null // optional, may be null
String format = params.get( "format" ); String format = params.get( "format" );
String trackName = params.get( "trackName" ); String trackName = params.get( "trackname" );
if (trackName != null) { if (trackName != null) {
track.name = trackName; track.name = trackName;
} }