package org.droidplanner.services.android.impl.core.helpers.geoTools; import com.o3dr.services.android.lib.coordinate.LatLong; import com.o3dr.services.android.lib.coordinate.LatLongAlt; import junit.framework.TestCase; import org.droidplanner.services.android.impl.core.polygon.Polygon; public class GeoToolsTest extends TestCase { LatLongAlt p1 = new LatLongAlt(37.85363485683941, -122.4204097390123, (250.0)); LatLongAlt p2 = new LatLongAlt(37.85130335221235, -122.4142645673542, (0.0)); double polygonArea = 502915; double dist2DP1toP2 = 599.26; double dist3DP1toP2 = 649.32; double headingP1toP2 = 115.7; public void testGetDistance() { double tolerance = dist2DP1toP2 * 0.0005; assertEquals(dist2DP1toP2, GeoTools.getDistance(p1, p2), tolerance); assertEquals(dist2DP1toP2, GeoTools.getDistance(p2, p1), tolerance); } public void testGet3DDistance() { double tolerance = dist2DP1toP2 * 0.0005; assertEquals(dist3DP1toP2, GeoTools.get3DDistance(p1, p2), tolerance); assertEquals(dist3DP1toP2, GeoTools.get3DDistance(p2, p1), tolerance); } public void testGetHeadingFromCoordinates() { double tolerance = headingP1toP2 * 0.0005; assertEquals(headingP1toP2, GeoTools.getHeadingFromCoordinates(p1, p2), tolerance); } public void testGetArea() { double tolerance = polygonArea * 0.001; Polygon poly = new Polygon(); poly.addPoint(new LatLong(51.0282781100882, 2.16705322265625)); poly.addPoint(new LatLong(51.0317878663996, 2.16293267905712)); poly.addPoint(new LatLong(51.0313285768174, 2.16915607452393)); poly.addPoint(new LatLong(51.0349709823585, 2.17203207314014)); poly.addPoint(new LatLong(51.0318104275059, 2.17568457126617)); poly.addPoint(new LatLong(51.0326774403918, 2.18168333172798)); poly.addPoint(new LatLong(51.0285218722540, 2.18014307320118)); assertEquals(polygonArea, GeoTools.getArea(poly).valueInSqMeters(), tolerance); poly.reversePoints(); assertEquals(polygonArea, GeoTools.getArea(poly).valueInSqMeters(), tolerance); } }