Example #1
0
        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");
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #4
0
        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");
        }
Example #5
0
        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");
        }
Example #6
0
        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");
        }
Example #7
0
        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");
        }
Example #8
0
        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");
        }