From b09d0e98541edc7122d992e85547741ffd57f72a Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Sat, 26 Nov 2016 19:33:54 +0700 Subject: Implement polyline geofence --- test/org/traccar/helper/DistanceCalculatorTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'test/org/traccar/helper/DistanceCalculatorTest.java') diff --git a/test/org/traccar/helper/DistanceCalculatorTest.java b/test/org/traccar/helper/DistanceCalculatorTest.java index 7bbb4e3b1..2ce54c583 100644 --- a/test/org/traccar/helper/DistanceCalculatorTest.java +++ b/test/org/traccar/helper/DistanceCalculatorTest.java @@ -10,5 +10,14 @@ public class DistanceCalculatorTest { Assert.assertEquals( DistanceCalculator.distance(0.0, 0.0, 0.05, 0.05), 7863.0, 10.0); } + + @Test + public void testDistanceToInterval() { + Assert.assertEquals(DistanceCalculator.distanceToInterval( + 56.83801, 60.59748, 56.83777, 60.59833, 56.83766, 60.5968), 33.0, 5.0); + + Assert.assertEquals(DistanceCalculator.distanceToInterval( + 56.83753, 60.59508, 56.83777, 60.59833, 56.83766, 60.5968), 105.0, 5.0); + } } -- cgit v1.2.3 From 5ea4572553a84126b7e9f06c822e1a183413a558 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Sun, 27 Nov 2016 10:18:13 +0700 Subject: - Rename function - Fix formatting --- src/org/traccar/geofence/GeofencePolyline.java | 2 +- src/org/traccar/helper/DistanceCalculator.java | 2 +- .../org/traccar/geofence/GeofencePolylineTest.java | 25 ++++++++-------------- .../org/traccar/helper/DistanceCalculatorTest.java | 6 +++--- 4 files changed, 14 insertions(+), 21 deletions(-) (limited to 'test/org/traccar/helper/DistanceCalculatorTest.java') diff --git a/src/org/traccar/geofence/GeofencePolyline.java b/src/org/traccar/geofence/GeofencePolyline.java index e99987207..cadc69da6 100644 --- a/src/org/traccar/geofence/GeofencePolyline.java +++ b/src/org/traccar/geofence/GeofencePolyline.java @@ -38,7 +38,7 @@ public class GeofencePolyline extends GeofenceGeometry { public boolean containsPoint(double latitude, double longitude) { double longitude360 = longitude + Coordinate.DEGREE360; for (int i = 1; i < coordinates.size(); i++) { - if (DistanceCalculator.distanceToInterval( + if (DistanceCalculator.distanceToLine( latitude, longitude360, coordinates.get(i - 1).getLat(), coordinates.get(i - 1).getLon360(), coordinates.get(i).getLat(), coordinates.get(i).getLon360()) <= distance) { return true; diff --git a/src/org/traccar/helper/DistanceCalculator.java b/src/org/traccar/helper/DistanceCalculator.java index 873e84977..88d4ef8a4 100644 --- a/src/org/traccar/helper/DistanceCalculator.java +++ b/src/org/traccar/helper/DistanceCalculator.java @@ -34,7 +34,7 @@ public final class DistanceCalculator { return d * 1000; } - public static double distanceToInterval( + public static double distanceToLine( double pointLat, double pointLon, double lat1, double lon1, double lat2, double lon2) { double d0 = distance(pointLat, pointLon, lat1, lon1); double d1 = distance(lat1, lon1, lat2, lon2); diff --git a/test/org/traccar/geofence/GeofencePolylineTest.java b/test/org/traccar/geofence/GeofencePolylineTest.java index df939d8ba..e281c3dd6 100644 --- a/test/org/traccar/geofence/GeofencePolylineTest.java +++ b/test/org/traccar/geofence/GeofencePolylineTest.java @@ -12,7 +12,7 @@ public class GeofencePolylineTest { String test = "LINESTRING (55.75474 37.61823, 55.75513 37.61888, 55.7535 37.6222, 55.75315 37.62165)"; GeofenceGeometry geofenceGeometry = new GeofencePolyline(); try { - geofenceGeometry.fromWkt(test); + geofenceGeometry.fromWkt(test); } catch (ParseException e){ Assert.assertTrue("ParseExceprion: " + e.getMessage(), true); } @@ -22,33 +22,26 @@ public class GeofencePolylineTest { @Test public void testContainsPolyline1Interval() { String test = "LINESTRING (56.83777 60.59833, 56.83766 60.5968)"; - try { - GeofenceGeometry geofenceGeometry = new GeofencePolyline(test, 35); - Assert.assertTrue(geofenceGeometry.containsPoint(56.83801, 60.59748)); - - ((GeofencePolyline) geofenceGeometry).setDistance(15); - Assert.assertTrue(!geofenceGeometry.containsPoint(56.83801, 60.59748)); - + GeofenceGeometry geofenceGeometry = new GeofencePolyline(test, 35); + Assert.assertTrue(geofenceGeometry.containsPoint(56.83801, 60.59748)); + ((GeofencePolyline) geofenceGeometry).setDistance(15); + Assert.assertTrue(!geofenceGeometry.containsPoint(56.83801, 60.59748)); } catch (ParseException e){ Assert.assertTrue("ParseExceprion: " + e.getMessage(), true); } } - @Test public void testContainsPolyline3Intervals() { String test = "LINESTRING (56.836 60.6126, 56.8393 60.6114, 56.83887 60.60811, 56.83782 60.5988)"; - try { - GeofenceGeometry geofenceGeometry = new GeofencePolyline(test, 15); - Assert.assertTrue(geofenceGeometry.containsPoint(56.83847, 60.60458)); - Assert.assertTrue(!geofenceGeometry.containsPoint(56.83764, 60.59725)); - Assert.assertTrue(!geofenceGeometry.containsPoint(56.83861, 60.60822)); - + GeofenceGeometry geofenceGeometry = new GeofencePolyline(test, 15); + Assert.assertTrue(geofenceGeometry.containsPoint(56.83847, 60.60458)); + Assert.assertTrue(!geofenceGeometry.containsPoint(56.83764, 60.59725)); + Assert.assertTrue(!geofenceGeometry.containsPoint(56.83861, 60.60822)); } catch (ParseException e){ Assert.assertTrue("ParseExceprion: " + e.getMessage(), true); } } - } diff --git a/test/org/traccar/helper/DistanceCalculatorTest.java b/test/org/traccar/helper/DistanceCalculatorTest.java index 2ce54c583..22e41c9a3 100644 --- a/test/org/traccar/helper/DistanceCalculatorTest.java +++ b/test/org/traccar/helper/DistanceCalculatorTest.java @@ -12,11 +12,11 @@ public class DistanceCalculatorTest { } @Test - public void testDistanceToInterval() { - Assert.assertEquals(DistanceCalculator.distanceToInterval( + public void testDistanceToLine() { + Assert.assertEquals(DistanceCalculator.distanceToLine( 56.83801, 60.59748, 56.83777, 60.59833, 56.83766, 60.5968), 33.0, 5.0); - Assert.assertEquals(DistanceCalculator.distanceToInterval( + Assert.assertEquals(DistanceCalculator.distanceToLine( 56.83753, 60.59508, 56.83777, 60.59833, 56.83766, 60.5968), 105.0, 5.0); } -- cgit v1.2.3