From 6f4a47f11f52358c6a843da775d855619e2ee4f5 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Mon, 24 Oct 2016 17:13:52 +0500 Subject: Add exclusion for valid positions to CoordinatesHandler --- src/org/traccar/CoordinatesHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/traccar/CoordinatesHandler.java b/src/org/traccar/CoordinatesHandler.java index 7d1c43284..ad445bc28 100644 --- a/src/org/traccar/CoordinatesHandler.java +++ b/src/org/traccar/CoordinatesHandler.java @@ -42,7 +42,7 @@ public class CoordinatesHandler extends BaseDataHandler { if (last != null) { double distance = DistanceCalculator.distance( position.getLatitude(), position.getLongitude(), last.getLatitude(), last.getLongitude()); - if (distance < coordinatesMinError || distance > coordinatesMaxError) { + if (distance < coordinatesMinError || distance > coordinatesMaxError && !position.getValid()) { position.setLatitude(last.getLatitude()); position.setLongitude(last.getLongitude()); } -- cgit v1.2.3 From 5c3ddc72a207bf67a7c4e4229aa1783dbb20d070 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Tue, 25 Oct 2016 09:26:32 +0500 Subject: Remove default values and improve the logic --- src/org/traccar/CoordinatesHandler.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/org/traccar/CoordinatesHandler.java b/src/org/traccar/CoordinatesHandler.java index ad445bc28..53b33ebbc 100644 --- a/src/org/traccar/CoordinatesHandler.java +++ b/src/org/traccar/CoordinatesHandler.java @@ -25,8 +25,8 @@ public class CoordinatesHandler extends BaseDataHandler { public CoordinatesHandler() { Config config = Context.getConfig(); - coordinatesMinError = config.getInteger("coordinates.minError", 50); - coordinatesMaxError = config.getInteger("coordinates.maxError", 1000000); + coordinatesMinError = config.getInteger("coordinates.minError"); + coordinatesMaxError = config.getInteger("coordinates.maxError"); } private Position getLastPosition(long deviceId) { @@ -39,10 +39,11 @@ public class CoordinatesHandler extends BaseDataHandler { @Override protected Position handlePosition(Position position) { Position last = getLastPosition(position.getDeviceId()); - if (last != null) { + if (last != null && last.getLatitude() != 0 && last.getLongitude() != 0) { double distance = DistanceCalculator.distance( position.getLatitude(), position.getLongitude(), last.getLatitude(), last.getLongitude()); - if (distance < coordinatesMinError || distance > coordinatesMaxError && !position.getValid()) { + if (coordinatesMinError != 0 && distance < coordinatesMinError + || coordinatesMaxError != 0 && distance > coordinatesMaxError && !position.getValid()) { position.setLatitude(last.getLatitude()); position.setLongitude(last.getLongitude()); } -- cgit v1.2.3 From 419a008c13e6d388e56ac1961a2fc6959df87ab4 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Tue, 25 Oct 2016 12:11:44 +0500 Subject: Improved checks of last and new position --- src/org/traccar/CoordinatesHandler.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/org/traccar/CoordinatesHandler.java b/src/org/traccar/CoordinatesHandler.java index 53b33ebbc..703361ecf 100644 --- a/src/org/traccar/CoordinatesHandler.java +++ b/src/org/traccar/CoordinatesHandler.java @@ -39,11 +39,12 @@ public class CoordinatesHandler extends BaseDataHandler { @Override protected Position handlePosition(Position position) { Position last = getLastPosition(position.getDeviceId()); - if (last != null && last.getLatitude() != 0 && last.getLongitude() != 0) { + if (last != null && last.getValid() && last.getLatitude() != 0 && last.getLongitude() != 0) { double distance = DistanceCalculator.distance( position.getLatitude(), position.getLongitude(), last.getLatitude(), last.getLongitude()); - if (coordinatesMinError != 0 && distance < coordinatesMinError - || coordinatesMaxError != 0 && distance > coordinatesMaxError && !position.getValid()) { + boolean satisfiesMin = coordinatesMinError == 0 || distance > coordinatesMinError; + boolean satisfiesMax = coordinatesMaxError == 0 || distance < coordinatesMaxError || position.getValid(); + if (!(satisfiesMin && satisfiesMax)) { position.setLatitude(last.getLatitude()); position.setLongitude(last.getLongitude()); } -- cgit v1.2.3 From 55ec26e048eb9cd635bedf07726ab206e8b8536f Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Tue, 25 Oct 2016 12:37:01 +0500 Subject: Expand expression --- src/org/traccar/CoordinatesHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/traccar/CoordinatesHandler.java b/src/org/traccar/CoordinatesHandler.java index 703361ecf..b9c33dc2b 100644 --- a/src/org/traccar/CoordinatesHandler.java +++ b/src/org/traccar/CoordinatesHandler.java @@ -44,7 +44,7 @@ public class CoordinatesHandler extends BaseDataHandler { position.getLatitude(), position.getLongitude(), last.getLatitude(), last.getLongitude()); boolean satisfiesMin = coordinatesMinError == 0 || distance > coordinatesMinError; boolean satisfiesMax = coordinatesMaxError == 0 || distance < coordinatesMaxError || position.getValid(); - if (!(satisfiesMin && satisfiesMax)) { + if (!satisfiesMin || !satisfiesMax) { position.setLatitude(last.getLatitude()); position.setLongitude(last.getLongitude()); } -- cgit v1.2.3