View Javadoc
1   package org.opentrafficsim.kpi.sampling.indicator;
2   
3   import java.util.List;
4   
5   import org.djunits.value.vdouble.scalar.Speed;
6   import org.djunits.value.vdouble.scalar.Time;
7   import org.opentrafficsim.kpi.sampling.Query;
8   import org.opentrafficsim.kpi.sampling.TrajectoryGroup;
9   
10  /**
11   * Sum of trajectory lengths divided by sum of trajectory durations.
12   * <p>
13   * Copyright (c) 2013-2016 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
14   * BSD-style license. See <a href="http://opentrafficsim.org/node/13">OpenTrafficSim License</a>.
15   * <p>
16   * @version $Revision$, $LastChangedDate$, by $Author$, initial version Sep 22, 2016 <br>
17   * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
18   * @author <a href="http://www.tudelft.nl/pknoppers">Peter Knoppers</a>
19   * @author <a href="http://www.transport.citg.tudelft.nl">Wouter Schakel</a>
20   */
21  public class MeanSpeed extends AbstractIndicator<Speed>
22  {
23  
24      /** Travel distance indicator. */
25      private final TotalTravelDistance travelDistance;
26  
27      /** Travel time indicator. */
28      private final TotalTravelTime travelTime;
29  
30      /**
31       * @param travelDistance travel distance indicator
32       * @param travelTime travel time indicator
33       */
34      public MeanSpeed(final TotalTravelDistance travelDistance, final TotalTravelTime travelTime)
35      {
36          this.travelDistance = travelDistance;
37          this.travelTime = travelTime;
38      }
39  
40      /** {@inheritDoc} */
41      @Override
42      public final Speed calculate(final Query query, final Time startTime, final Time endTime,
43              final List<TrajectoryGroup> trajectoryGroups)
44      {
45          return this.travelDistance.getValue(query, startTime, endTime, trajectoryGroups)
46                  .divideBy(this.travelTime.getValue(query, startTime, endTime, trajectoryGroups));
47      }
48  
49      /** {@inheritDoc} */
50      @Override
51      @SuppressWarnings("checkstyle:designforextension")
52      public String toString()
53      {
54          return "MeanSpeed [travelDistance=" + this.travelDistance + ", travelTime=" + this.travelTime + "]";
55      }
56  
57  }