public void Bearing() { var pt1 = Turf.Point(new double[] { -75.4, 39.4 }); var pt2 = Turf.Point(new double[] { -75.534, 39.123 }); var bear = Turf.Bearing(pt1, pt2); Assert.AreEqual(bear, -159.42, 0.01, "should return the correct bearing"); }
public void Inside_PolyWithHole() { var ptInHole = Turf.Point(new double[] { -86.69208526611328, 36.20373274711739 }); var ptInPoly = Turf.Point(new double[] { -86.72229766845702, 36.20258997094334 }); var ptOutsidePoly = Turf.Point(new double[] { -86.75079345703125, 36.18527313913089 }); var polyHole = JsonConvert.DeserializeObject <Feature>(Tools.GetResource("poly-with-hole.geojson")); Assert.False(Turf.Inside(ptInHole, polyHole)); Assert.True(Turf.Inside(ptInPoly, polyHole)); Assert.False(Turf.Inside(ptOutsidePoly, polyHole)); }
public void LineDistance() { var route1 = JsonConvert.DeserializeObject <Feature>(Tools.GetResource("linedistance.route1.geojson")); var route2 = JsonConvert.DeserializeObject <Feature>(Tools.GetResource("linedistance.route2.geojson")); Assert.AreEqual(Math.Round(Turf.LineDistance((IGeoJSONObject)route1.Geometry, "miles")), 202); var point1 = Turf.Point(new double[] { -75.343, 39.984 }); try { Turf.LineDistance(point1, "miles"); Assert.Fail(); } catch { Assert.Pass(); } var multiPoint1 = new MultiPoint(new List <Point>() { new Point(new GeographicPosition(39.984, -75.343)), new Point(new GeographicPosition(39.123, -75.534)) }); try { Turf.LineDistance(multiPoint1, "miles"); Assert.Fail(); } catch { Assert.Pass(); } Assert.AreEqual(Math.Round(Turf.LineDistance(route1, "miles")), 202); Assert.True((Turf.LineDistance(route2, "kilometers") - 742) < 1 && (Turf.LineDistance(route2, "kilometers") - 742) > (-1)); var feat = JsonConvert.DeserializeObject <Feature>(Tools.GetResource("linedistance.polygon.geojson")); Assert.AreEqual(Math.Round(1000 * Turf.LineDistance(feat, "kilometers")), 5599); feat = JsonConvert.DeserializeObject <Feature>(Tools.GetResource("linedistance.multilinestring.geojson")); Assert.AreEqual(Math.Round(1000 * Turf.LineDistance(feat, "kilometers")), 4705); feat = JsonConvert.DeserializeObject <Feature>(Tools.GetResource("linedistance.multipolygon.geojson")); Assert.AreEqual(Math.Round(1000 * Turf.LineDistance(feat, "kilometers")), 8334); var fc = JsonConvert.DeserializeObject <FeatureCollection>(Tools.GetResource("linedistance.featurecollection.geojson")); Assert.AreEqual(Math.Round(1000 * Turf.LineDistance(fc, "kilometers")), 10304); }
public void Circle() { var center = Turf.Point(new double[] { -75.343, 39.984 }); double radius = 5; int steps = 10; var polygon = Turf.Circle(center, radius, steps, "kilometers"); var point1 = Turf.Destination(center, radius - 1, 45, "kilometers"); var point2 = Turf.Destination(center, radius + 1, 135, "kilometers"); Assert.AreEqual(Turf.Inside(point1, polygon), true, "point is inside the polygon"); Assert.AreEqual(Turf.Inside(point2, polygon), false, "point is outside the polygon"); }
public void Distance() { var pt1 = Turf.Point(new double[] { -75.343, 39.984 }); var pt2 = Turf.Point(new double[] { -75.534, 39.123 }); Assert.AreEqual(Turf.Distance(pt1, pt2, "miles"), 60.37218405837491, 0.00001, "miles"); Assert.AreEqual(Turf.Distance(pt1, pt2, "nauticalmiles"), 52.461979624130436, 0.00001, "miles"); Assert.AreEqual(Turf.Distance(pt1, pt2, "kilometers"), 97.15957803131901, 0.00001, "kilometers"); Assert.AreEqual(Turf.Distance(pt1, pt2, "kilometres"), 97.15957803131901, 0.00001, "kilometres"); Assert.AreEqual(Turf.Distance(pt1, pt2, "radians"), 0.015245501024842149, 0.00001, "radians"); Assert.AreEqual(Turf.Distance(pt1, pt2, "degrees"), 0.8735028650863799, 0.00001, "degrees"); Assert.AreEqual(Turf.Distance(pt1, pt2), 97.15957803131901, 0.00001, "default=kilometers"); }
public void Destination() { var pt1 = Turf.Point(new double[] { -75.0, 39.0 }); double dist = 100; double bear = 180; var pt2 = Turf.Destination(pt1, dist, bear, "kilometers"); var ptgeom = (Point)pt2.Geometry; var prcoord = (GeographicPosition)ptgeom.Coordinates; Assert.AreEqual(prcoord.Longitude, -75, 0.001, "returns the correct point"); Assert.AreEqual(prcoord.Latitude, 38.10096062273525, 0.001, "returns the correct point"); Assert.AreEqual(ptgeom.Type, GeoJSONObjectType.Point, "returns the correct point"); }
public void Inside_FeatureCollection() { // test for a simple polygon var poly = new Feature(new Polygon(new List <LineString>() { new LineString(new List <Position>() { new GeographicPosition(0, 0), new GeographicPosition(100, 0), new GeographicPosition(100, 100), new GeographicPosition(0, 100), new GeographicPosition(0, 0) }) })); var ptIn = Turf.Point(new double[] { 50, 50 }); var ptOut = Turf.Point(new double[] { 140, 150 }); Assert.True(Turf.Inside(ptIn, poly), "point inside simple polygon"); Assert.False(Turf.Inside(ptOut, poly), "point outside simple polygon"); // test for a concave polygon var concavePoly = new Feature(new Polygon(new List <LineString>() { new LineString(new List <Position>() { new GeographicPosition(0, 0), new GeographicPosition(50, 50), new GeographicPosition(100, 50), new GeographicPosition(100, 100), new GeographicPosition(0, 100), new GeographicPosition(0, 0) }) })); var ptConcaveIn = Turf.Point(new double[] { 75, 75 }); var ptConcaveOut = Turf.Point(new double[] { 25, 50 }); Assert.True(Turf.Inside(ptConcaveIn, concavePoly), "point inside concave polygon"); Assert.False(Turf.Inside(ptConcaveOut, concavePoly), "point outside concave polygon"); }
public void MidPoint() { var units = "miles"; var pt1 = Turf.Point(new double[] { 0, 0 }); var pt2 = Turf.Point(new double[] { 10, 0 }); var mid = Turf.MidPoint(pt1, pt2); Assert.AreEqual(Turf.Distance(pt1, mid, units), Turf.Distance(mid, pt2, units), 0.000001, "midpoint -- horizonatal equator"); pt2 = Turf.Point(new double[] { 0, 10 }); mid = Turf.MidPoint(pt1, pt2); Assert.AreEqual(Turf.Distance(pt1, mid, units), Turf.Distance(mid, pt2, units), 0.000001, "midpoint -- vertical from equator"); mid = Turf.MidPoint(pt2, pt1); Assert.AreEqual(Turf.Distance(pt1, mid, units), Turf.Distance(mid, pt2, units), 0.000001, "midpoint -- vertical to equator"); pt1 = Turf.Point(new double[] { -1, 10 }); pt2 = Turf.Point(new double[] { 1, -1 }); mid = Turf.MidPoint(pt1, pt2); Assert.AreEqual(Turf.Distance(pt1, mid, units), Turf.Distance(mid, pt2, units), 0.000001, "midpoint -- diagonal back over equator"); pt1 = Turf.Point(new double[] { -5, -1 }); pt2 = Turf.Point(new double[] { 5, 10 }); mid = Turf.MidPoint(pt1, pt2); Assert.AreEqual(Turf.Distance(pt1, mid, units), Turf.Distance(mid, pt2, units), 0.000001, "midpoint -- diagonal forward over equator"); pt1 = Turf.Point(new double[] { 22.5, 21.94304553343818 }); pt2 = Turf.Point(new double[] { 92.10937499999999, 46.800059446787316 }); mid = Turf.MidPoint(pt1, pt2); Assert.AreEqual(Turf.Distance(pt1, mid, units), Turf.Distance(mid, pt2, units), 0.000001, "midpoint -- long distance"); }