RoutingTrafficSpeedCalculator.java

package org.heigit.ors.routing.traffic;

import com.graphhopper.routing.util.FlagEncoder;
import com.graphhopper.routing.util.SpeedCalculator;
import com.graphhopper.storage.GraphHopperStorage;
import com.graphhopper.util.EdgeIteratorState;

public class RoutingTrafficSpeedCalculator extends TrafficSpeedCalculator {
    private final double maxPossibleSpeed;

    public RoutingTrafficSpeedCalculator(SpeedCalculator superSpeedCalculator, GraphHopperStorage graphHopperStorage, FlagEncoder flagEncoder) {
        super(superSpeedCalculator);
        init(graphHopperStorage, flagEncoder);
        maxPossibleSpeed = flagEncoder.getMaxSpeed();
    }

    @Override
    public double getSpeed(EdgeIteratorState edge, boolean reverse, long time) {
        double speed = super.getSpeed(edge, reverse, time);

        if (speed > maxPossibleSpeed)
            speed = maxPossibleSpeed;

        return speed;
    }
}