From 1ca3ab609cc77706178a9784287272555d577382 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Tue, 22 Dec 2020 21:22:06 -0800 Subject: Fix average speed (fix #4616) --- src/main/java/org/traccar/reports/ReportUtils.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/main/java/org/traccar/reports/ReportUtils.java') diff --git a/src/main/java/org/traccar/reports/ReportUtils.java b/src/main/java/org/traccar/reports/ReportUtils.java index 870264fad..8dd77606c 100644 --- a/src/main/java/org/traccar/reports/ReportUtils.java +++ b/src/main/java/org/traccar/reports/ReportUtils.java @@ -29,6 +29,7 @@ import org.traccar.Context; import org.traccar.database.DeviceManager; import org.traccar.database.IdentityManager; import org.traccar.handler.events.MotionEventHandler; +import org.traccar.helper.UnitsConverter; import org.traccar.model.DeviceState; import org.traccar.model.Driver; import org.traccar.model.Event; @@ -173,11 +174,9 @@ public final class ReportUtils { Position startTrip = positions.get(startIndex); Position endTrip = positions.get(endIndex); - double speedMax = 0.0; - double speedSum = 0.0; + double speedMax = 0; for (int i = startIndex; i <= endIndex; i++) { double speed = positions.get(i).getSpeed(); - speedSum += speed; if (speed > speedMax) { speedMax = speed; } @@ -214,7 +213,9 @@ public final class ReportUtils { trip.setDistance(calculateDistance(startTrip, endTrip, !ignoreOdometer)); trip.setDuration(tripDuration); - trip.setAverageSpeed(speedSum / (endIndex - startIndex)); + if (tripDuration > 0) { + trip.setAverageSpeed(UnitsConverter.knotsFromMps(trip.getDistance() * 1000 / tripDuration)); + } trip.setMaxSpeed(speedMax); trip.setSpentFuel(calculateFuel(startTrip, endTrip)); -- cgit v1.2.3