1 package org.opentrafficsim.kpi.sampling.indicator;
2
3 import java.util.HashSet;
4 import java.util.List;
5 import java.util.Set;
6
7 import org.djunits.value.vdouble.scalar.Length;
8 import org.djunits.value.vdouble.scalar.Time;
9 import org.opentrafficsim.kpi.sampling.Query;
10 import org.opentrafficsim.kpi.sampling.Trajectory;
11 import org.opentrafficsim.kpi.sampling.TrajectoryGroup;
12
13
14
15
16
17
18
19
20
21
22
23
24 public class MeanTripLength extends AbstractIndicator<Length>
25 {
26
27
28 @Override
29 protected Length calculate(final Query query, final Time startTime, final Time endTime,
30 final List<TrajectoryGroup> trajectoryGroups)
31 {
32 Length sum = Length.ZERO;
33 Set<String> gtuIds = new HashSet<>();
34 for (TrajectoryGroup trajectoryGroup : trajectoryGroups)
35 {
36 for (Trajectory<?> trajectory : trajectoryGroup.getTrajectories())
37 {
38 sum = sum.plus(trajectory.getTotalLength());
39 gtuIds.add(trajectory.getGtuId());
40 }
41 }
42 return sum.divideBy(gtuIds.size());
43 }
44
45
46 @Override
47 @SuppressWarnings("checkstyle:designforextension")
48 public String toString()
49 {
50 return "MeanTripLength []";
51 }
52
53 }