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"); }
private static void AddLineString(SqlGeographyBuilder builder, GeoJsonLineString geometry, bool isLongitudeFirst) { builder.BeginGeography(OpenGisGeographyType.LineString); AddLineStringOrRing(builder, geometry.Coordinates, false, isLongitudeFirst); builder.EndGeography(); }
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); } }
/// <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"); }
private void SerializeDerivedMembers(BsonSerializationContext context, GeoJsonLineString <TCoordinates> value) { SerializeCoordinates(context, value.Coordinates); }
/// <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); }