diff options
author | Abyss777 <abyss@fox5.ru> | 2017-06-15 10:32:06 +0500 |
---|---|---|
committer | Abyss777 <abyss@fox5.ru> | 2017-06-15 10:32:06 +0500 |
commit | 9b95e663b75ed9a8518996419268b0f810b8ac5d (patch) | |
tree | 21b4c2cb7928b27c2a2ee7e9ca6d2851ef6a6009 /src/org/traccar/reports/ReportUtils.java | |
parent | f06a4a99f0457cb385dd3465b5be592551a3530b (diff) | |
download | trackermap-server-9b95e663b75ed9a8518996419268b0f810b8ac5d.tar.gz trackermap-server-9b95e663b75ed9a8518996419268b0f810b8ac5d.tar.bz2 trackermap-server-9b95e663b75ed9a8518996419268b0f810b8ac5d.zip |
Detect Trips and Stops by gaps in data
Diffstat (limited to 'src/org/traccar/reports/ReportUtils.java')
-rw-r--r-- | src/org/traccar/reports/ReportUtils.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/org/traccar/reports/ReportUtils.java b/src/org/traccar/reports/ReportUtils.java index ead50571a..985b1173f 100644 --- a/src/org/traccar/reports/ReportUtils.java +++ b/src/org/traccar/reports/ReportUtils.java @@ -132,7 +132,8 @@ public final class ReportUtils { Context.getConfig().getLong("report.trip.minimalTripDuration", 300) * 1000, Context.getConfig().getLong("report.trip.minimalTripDistance", 500), Context.getConfig().getLong("report.trip.minimalParkingDuration", 300) * 1000, - Context.getConfig().getBoolean("report.trip.greedyParking")); + Context.getConfig().getBoolean("report.trip.greedyParking"), + Context.getConfig().getLong("report.trip.minimalNoDataDuration", 0) * 1000); } private static TripReport calculateTrip( @@ -212,6 +213,16 @@ public final class ReportUtils { } + private static boolean isMoving(ArrayList<Position> positions, int index, + TripsConfig tripsConfig, double speedThreshold) { + if (tripsConfig.getMinimalNoDataDuration() > 0 && index < positions.size() - 1 + && positions.get(index + 1).getFixTime().getTime() - positions.get(index).getFixTime().getTime() + >= tripsConfig.getMinimalNoDataDuration()) { + return false; + } + return positions.get(index).getSpeed() > speedThreshold; + } + public static Collection<BaseReport> detectTripsAndStops(TripsConfig tripsConfig, boolean ignoreOdometer, double speedThreshold, Collection<Position> positionCollection, boolean trips) { @@ -230,7 +241,7 @@ public final class ReportUtils { boolean tripFiltered = false; for (int i = 0; i < positions.size(); i++) { - isMoving = positions.get(i).getSpeed() > speedThreshold; + isMoving = isMoving(positions, i, tripsConfig, speedThreshold); isLast = i == positions.size() - 1; if ((isMoving || isLast) && startParkingIndex != -1) { |