public void Constructor2()
        {
            double[][] array =
            {
                new [] { 9.536067, 55.708116, 1.125 },
                new [] { 9.536000, 55.708068, 2.250 },
                new [] { 9.536169, 55.708062, 4.500 }
            };

            GeoJsonLineString lineString = new GeoJsonLineString(array);

            Assert.AreEqual(3, lineString.Count);

            GeoJsonCoordinates p1 = lineString[0];
            GeoJsonCoordinates p2 = lineString[1];
            GeoJsonCoordinates p3 = lineString[2];

            Assert.AreEqual(9.536067, p1.X, "#1 X");
            Assert.AreEqual(55.708116, p1.Y, "#1 Y");
            Assert.AreEqual(1.125, p1.Altitude, "#1 Altitude");

            Assert.AreEqual(9.536000, p2.X, "#2 X");
            Assert.AreEqual(55.708068, p2.Y, "#2 Y");
            Assert.AreEqual(2.250, p2.Altitude, "#2 Altitude");

            Assert.AreEqual(9.536169, p3.X, "#3 X");
            Assert.AreEqual(55.708062, p3.Y, "#3 Y");
            Assert.AreEqual(4.500, p3.Altitude, "#3 Altitude");
        }
        //Not supporting Z and M values
        private static EsriPolyline ToEsriPolyline(GeoJsonLineString geometry, bool isLongitudeFirst, int srid, Func <IPoint, IPoint> mapFunction)
        {
            if (geometry.IsNullOrEmpty())
            {
                return(new EsriPolyline());
            }

            //int numberOfGeometries = geometry.STNumGeometries().Value;

            //List<EsriPoint> points = new List<EsriPoint>(geometry.STNumPoints().Value);

            //List<int> parts = new List<int>(numberOfGeometries);

            //for (int i = 0; i < numberOfGeometries; i++)
            //{
            //    int index = i + 1;

            //    parts.Add(points.Count);

            //    points.AddRange(GetPoints(geometry.STGeometryN(index), mapFunction));
            //}

            //return new EsriPolyline(points.ToArray(), parts.ToArray());

            return(new EsriPolyline(GetPoints(geometry.Coordinates, isLongitudeFirst, srid, mapFunction).ToArray()));
        }
        public void Constructor4()
        {
            List <GeoJsonCoordinates> sample = new List <GeoJsonCoordinates> {
                new GeoJsonCoordinates(9.536067, 55.708116),
                new GeoJsonCoordinates(9.536000, 55.708068),
                new GeoJsonCoordinates(9.536169, 55.708062)
            };

            GeoJsonLineString lineString = new GeoJsonLineString(sample);

            Assert.AreEqual(3, lineString.Count);

            GeoJsonCoordinates p1 = lineString[0];
            GeoJsonCoordinates p2 = lineString[1];
            GeoJsonCoordinates p3 = lineString[2];

            Assert.AreEqual(9.536067, p1.X, "#1 X");
            Assert.AreEqual(55.708116, p1.Y, "#1 Y");
            Assert.AreEqual(0, p1.Altitude, "#1 Altitude");

            Assert.AreEqual(9.536000, p2.X, "#2 X");
            Assert.AreEqual(55.708068, p2.Y, "#2 Y");
            Assert.AreEqual(0, p2.Altitude, "#2 Altitude");

            Assert.AreEqual(9.536169, p3.X, "#3 X");
            Assert.AreEqual(55.708062, p3.Y, "#3 Y");
            Assert.AreEqual(0, p3.Altitude, "#3 Altitude");
        }
        public void ToJson1()
        {
            GeoJsonLineString lineString1 = new GeoJsonLineString {
                new GeoJsonCoordinates(9.531255, 55.714869),
                new GeoJsonCoordinates(9.530941, 55.714614),
                new GeoJsonCoordinates(9.53129, 55.714482)
            };

            GeoJsonLineString lineString2 = new GeoJsonLineString {
                new GeoJsonCoordinates(9.531613, 55.714659),
                new GeoJsonCoordinates(9.531278, 55.714791),
                new GeoJsonCoordinates(9.531041, 55.7146),
                new GeoJsonCoordinates(9.531275, 55.714505),
                new GeoJsonCoordinates(9.531354, 55.714571),
                new GeoJsonCoordinates(9.531452, 55.714529)
            };

            GeoJsonMultiLineString multiLineString = new GeoJsonMultiLineString(lineString1, lineString2);

            Assert.AreEqual(2, multiLineString.Count);

            Assert.AreEqual(3, lineString1.Count);
            Assert.AreEqual(6, lineString2.Count);

            Assert.AreEqual(Json1, multiLineString.ToJson(Formatting.None));
        }
        public void Constructor5()
        {
            var p1a = new GeoJsonCoordinates(9.531255, 55.714869);
            var p1b = new GeoJsonCoordinates(9.530941, 55.714614);
            var p1c = new GeoJsonCoordinates(9.531290, 55.714482);

            GeoJsonLineString lineString1 = new GeoJsonLineString(p1a, p1b, p1c);

            var p2a = new GeoJsonCoordinates(9.531613, 55.714659);
            var p2b = new GeoJsonCoordinates(9.531278, 55.714791);
            var p2c = new GeoJsonCoordinates(9.531041, 55.714600);
            var p2d = new GeoJsonCoordinates(9.531275, 55.714505);
            var p2e = new GeoJsonCoordinates(9.531354, 55.714571);
            var p2f = new GeoJsonCoordinates(9.531452, 55.714529);

            GeoJsonLineString lineString2 = new GeoJsonLineString(p2a, p2b, p2c, p2d, p2e, p2f);

            List <GeoJsonLineString> list = new List <GeoJsonLineString> {
                lineString1, lineString2
            };

            GeoJsonMultiLineString multiLineString = new GeoJsonMultiLineString(list);

            Assert1(multiLineString);
        }
        public void Constructor5()
        {
            ILineString sample = new LineString(
                new Point(55.708116, 9.536067),
                new Point(55.708068, 9.536000),
                new Point(55.708062, 9.536169)
                );

            GeoJsonLineString lineString = new GeoJsonLineString(sample);

            Assert.AreEqual(3, lineString.Count);

            GeoJsonCoordinates p1 = lineString[0];
            GeoJsonCoordinates p2 = lineString[1];
            GeoJsonCoordinates p3 = lineString[2];

            Assert.AreEqual(9.536067, p1.X, "#1 X");
            Assert.AreEqual(55.708116, p1.Y, "#1 Y");
            Assert.AreEqual(0, p1.Altitude, "#1 Altitude");

            Assert.AreEqual(9.536000, p2.X, "#2 X");
            Assert.AreEqual(55.708068, p2.Y, "#2 Y");
            Assert.AreEqual(0, p2.Altitude, "#2 Altitude");

            Assert.AreEqual(9.536169, p3.X, "#3 X");
            Assert.AreEqual(55.708062, p3.Y, "#3 Y");
            Assert.AreEqual(0, p3.Altitude, "#3 Altitude");
        }
Esempio n. 7
0
        private static void AddLineString(SqlGeographyBuilder builder, GeoJsonLineString geometry, bool isLongitudeFirst)
        {
            builder.BeginGeography(OpenGisGeographyType.LineString);

            AddLineStringOrRing(builder, geometry.Coordinates, false, isLongitudeFirst);

            builder.EndGeography();
        }
Esempio n. 8
0
        private void TestRoundTrip <TCoordinates>(string expected, GeoJsonLineString <TCoordinates> lineString) where TCoordinates : GeoJsonCoordinates
        {
            var json = lineString.ToJson();

            Assert.AreEqual(expected, json);

            var rehydrated = BsonSerializer.Deserialize <GeoJsonLineString <TCoordinates> >(json);

            Assert.AreEqual(expected, rehydrated.ToJson());
        }
        /// <summary>
        /// Parses the specified <paramref name="json"/> object into an instance deriving from <see cref="GeoJsonObject"/>.
        ///
        /// As the GeoJSON format specified the type of a
        /// </summary>
        /// <param name="json">The JSON object.</param>
        /// <returns>An instance that derives from <see cref="GeoJsonObject"/>.</returns>
        private static GeoJsonObject Parse(JObject json)
        {
            if (json == null)
            {
                return(null);
            }

            // Get the value of the "type" property
            string type = json.GetString("type");

            if (string.IsNullOrWhiteSpace(type))
            {
                throw new GeoJsonParseException("The JSON object doesn't specify a type", json);
            }

            // Parse the type into an enum
            if (EnumUtils.TryParseEnum(type, out GeoJsonType result) == false)
            {
                throw new GeoJsonParseException($"Unknown type {type}", json);
            }

            switch (result)
            {
            case GeoJsonType.Feature:
                return(GeoJsonFeature.Parse(json));

            case GeoJsonType.FeatureCollection:
                return(GeoJsonFeatureCollection.Parse(json));

            case GeoJsonType.Point:
                return(GeoJsonPoint.Parse(json));

            case GeoJsonType.LineString:
                return(GeoJsonLineString.Parse(json));

            case GeoJsonType.Polygon:
                return(GeoJsonPolygon.Parse(json));

            case GeoJsonType.MultiPoint:
                return(GeoJsonMultiPoint.Parse(json));

            //case GeoJsonType.MultiLineString:
            //    return GeoJsonMultiLineString.Parse(obj);

            case GeoJsonType.MultiPolygon:
                return(GeoJsonMultiPolygon.Parse(json));

            case GeoJsonType.GeometryCollection:
                return(GeoJsonGeometryCollection.Parse(json));

            default:
                throw new GeoJsonParseException($"Unknown type {type}", json);
            }
        }
Esempio n. 10
0
        /// <inheritdoc />
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null)
            {
                return(null);
            }
            if (reader.TokenType != JsonToken.StartObject)
            {
                return(null);
            }

            JObject obj = JObject.Load(reader);

            string type = obj.Value <string>("type");

            switch (type?.ToLower())
            {
            case "feature":
                return(GeoJsonFeature.Parse(obj));

            case "featurecollection":
                return(GeoJsonFeatureCollection.Parse(obj));

            case "point":
                return(GeoJsonPoint.Parse(obj));

            case "multipoint":
                return(GeoJsonMultiPoint.Parse(obj));

            case "linestring":
                return(GeoJsonLineString.Parse(obj));

            case "multilinestring":
                return(GeoJsonMultiLineString.Parse(obj));

            case "polygon":
                return(GeoJsonPolygon.Parse(obj));

            case "multipolygon":
                return(GeoJsonMultiPolygon.Parse(obj));

            default:
                if (objectType == typeof(GeoJsonProperties))
                {
                    return(ReadJsonProperties(reader));
                }
                throw new GeoJsonParseException($"Unknown shape: {type}", obj);
            }
        }
        public void ToJson2()
        {
            double[][] array =
            {
                new [] { 9.536067, 55.708116, 1.125 },
                new [] { 9.536000, 55.708068, 2.250 },
                new [] { 9.536169, 55.708062, 4.500 }
            };

            GeoJsonLineString lineString = new GeoJsonLineString(array);

            string json = lineString.ToJson(Formatting.Indented);

            Assert.AreEqual("{\r\n  \"type\": \"LineString\",\r\n  \"coordinates\": [\r\n    [\r\n      9.536067,\r\n      55.708116,\r\n      1.125\r\n    ],\r\n    [\r\n      9.536,\r\n      55.708068,\r\n      2.25\r\n    ],\r\n    [\r\n      9.536169,\r\n      55.708062,\r\n      4.5\r\n    ]\r\n  ]\r\n}", json);
        }
        public void ToJson1()
        {
            double[][] array =
            {
                new [] { 9.536067, 55.708116, 1.125 },
                new [] { 9.536000, 55.708068, 2.250 },
                new [] { 9.536169, 55.708062, 4.500 }
            };

            GeoJsonLineString lineString = new GeoJsonLineString(array);

            string json = lineString.ToJson(Formatting.None);

            Assert.AreEqual("{\"type\":\"LineString\",\"coordinates\":[[9.536067,55.708116,1.125],[9.536,55.708068,2.25],[9.536169,55.708062,4.5]]}", json);
        }
        public void Deserialize1()
        {
            GeoJsonLineString lineString = JsonConvert.DeserializeObject <GeoJsonLineString>("{\"type\":\"LineString\",\"coordinates\":[[9.536067,55.708116,1.125],[9.536,55.708068,2.25],[9.536169,55.708062,4.5]]}");

            Assert.AreEqual(3, lineString.Count);

            GeoJsonCoordinates p1 = lineString[0];
            GeoJsonCoordinates p2 = lineString[1];
            GeoJsonCoordinates p3 = lineString[2];

            Assert.AreEqual(9.536067, p1.X, "#1 X");
            Assert.AreEqual(55.708116, p1.Y, "#1 Y");
            Assert.AreEqual(1.125, p1.Altitude, "#1 Altitude");

            Assert.AreEqual(9.536000, p2.X, "#2 X");
            Assert.AreEqual(55.708068, p2.Y, "#2 Y");
            Assert.AreEqual(2.250, p2.Altitude, "#2 Altitude");

            Assert.AreEqual(9.536169, p3.X, "#3 X");
            Assert.AreEqual(55.708062, p3.Y, "#3 Y");
            Assert.AreEqual(4.500, p3.Altitude, "#3 Altitude");
        }
        public void ToLineString()
        {
            ILineString sample = new LineString(
                new Point(55.708116, 9.536067),
                new Point(55.708068, 9.536000),
                new Point(55.708062, 9.536169)
                );

            // Convert the IPoint to a GeoJsonPoint
            GeoJsonLineString lineString = new GeoJsonLineString(sample);

            GeoJsonCoordinates p1 = lineString[0];
            GeoJsonCoordinates p2 = lineString[1];
            GeoJsonCoordinates p3 = lineString[2];

            Assert.AreEqual(9.536067, p1.X, "#1 X");
            Assert.AreEqual(55.708116, p1.Y, "#1 Y");
            Assert.AreEqual(0, p1.Altitude, "#1 Altitude");

            Assert.AreEqual(9.536000, p2.X, "#2 X");
            Assert.AreEqual(55.708068, p2.Y, "#2 Y");
            Assert.AreEqual(0, p2.Altitude, "#2 Altitude");

            Assert.AreEqual(9.536169, p3.X, "#3 X");
            Assert.AreEqual(55.708062, p3.Y, "#3 Y");
            Assert.AreEqual(0, p3.Altitude, "#3 Altitude");

            ILineString result = lineString.ToLineString();

            Assert.AreEqual(55.708116, result.Points[0].Latitude, "#1 Latitude");
            Assert.AreEqual(9.536067, result.Points[0].Longitude, "#1 Longitude");

            Assert.AreEqual(55.708068, result.Points[1].Latitude, "#2 Latitude");
            Assert.AreEqual(9.536000, result.Points[1].Longitude, "#2 Longitude");

            Assert.AreEqual(55.708062, result.Points[2].Latitude, "#3 Latitude");
            Assert.AreEqual(9.536169, result.Points[2].Longitude, "#3 Longitude");
        }
        private void Assert1(GeoJsonMultiLineString multiLineString)
        {
            Assert.AreEqual(2, multiLineString.Count);

            GeoJsonLineString lineString1 = multiLineString[0];

            Assert.AreEqual(3, lineString1.Count);

            Assert.AreEqual(9.531255, lineString1[0].X, "LineString 1 - #1 X");
            Assert.AreEqual(55.714869, lineString1[0].Y, "LineString 1 - #1 X");

            Assert.AreEqual(9.530941, lineString1[1].X, "LineString 1 - #2 X");
            Assert.AreEqual(55.714614, lineString1[1].Y, "LineString 1 - #2 X");

            Assert.AreEqual(9.53129, lineString1[2].X, "LineString 1 - #3 X");
            Assert.AreEqual(55.714482, lineString1[2].Y, "LineString 1 - #3 X");

            GeoJsonLineString lineString2 = multiLineString[1];

            Assert.AreEqual(9.531613, lineString2[0].X, "LineString 2 - #1 X");
            Assert.AreEqual(55.714659, lineString2[0].Y, "LineString 2 - #1 X");

            Assert.AreEqual(9.531278, lineString2[1].X, "LineString 2 - #2 X");
            Assert.AreEqual(55.714791, lineString2[1].Y, "LineString 2 - #2 X");

            Assert.AreEqual(9.531041, lineString2[2].X, "LineString 2 - #3 X");
            Assert.AreEqual(55.7146, lineString2[2].Y, "LineString 2 - #3 X");

            Assert.AreEqual(9.531275, lineString2[3].X, "LineString 2 - #4 X");
            Assert.AreEqual(55.714505, lineString2[3].Y, "LineString 2 - #4 X");

            Assert.AreEqual(9.531354, lineString2[4].X, "LineString 2 - #5 X");
            Assert.AreEqual(55.714571, lineString2[4].Y, "LineString 2 - #5 X");

            Assert.AreEqual(9.531452, lineString2[5].X, "LineString 2 - #6 X");
            Assert.AreEqual(55.714529, lineString2[5].Y, "LineString 2 - #6 X");
        }
Esempio n. 16
0
 private void SerializeDerivedMembers(BsonSerializationContext context, GeoJsonLineString <TCoordinates> value)
 {
     SerializeCoordinates(context, value.Coordinates);
 }
Esempio n. 17
0
 /// <summary>
 /// Serializes a value.
 /// </summary>
 /// <param name="context">The serialization context.</param>
 /// <param name="value">The value.</param>
 protected override void SerializeValue(BsonSerializationContext context, GeoJsonLineString <TCoordinates> value)
 {
     _helper.SerializeMembers(context, value, SerializeDerivedMembers);
 }
        public void Constructor1()
        {
            GeoJsonLineString lineString = new GeoJsonLineString();

            Assert.AreEqual(0, lineString.Count);
        }
        public void SaveRoute(RawRoute route, IEnumerable<StopPoint> stops, GeoBounds bounds)
        {
            var coords = stops.Select(s =>
                    new GeoJson2DGeographicCoordinates(s.longitude, s.latitude));

            var line = new GeoJsonLineString<GeoJson2DGeographicCoordinates>(
                new GeoJsonLineStringCoordinates<GeoJson2DGeographicCoordinates>(coords));

            BsonDocument bsonRoute = new BsonDocument
            {
                {"RouteName", route.RouteName},
                {"stops" , line.ToBsonDocument()
                },
                {"maxLongitude",bounds.TopLeft.Longitude},
                {"minLongitude",bounds.BottomRight.Longitude},
                {"maxLatitude", bounds.BottomRight.Latitude},
                {"minLatitude",bounds.TopLeft.Latitude}
            };

            Routes.Save(bsonRoute);
        }