static void Main(string[] args) { //var reader = new GeoJsonFileReader(); //var data = reader.Read(".\\routedata.geojson"); //var a = new A(); //a.title = "A"; //var b = new A(); //b.title = "b"; //a.Friends.Add(b); //b.Friends.Add(a); // Save(data, "data.txt"); var watch = System.Diagnostics.Stopwatch.StartNew(); // the code that you want to measure comes here var reader = new GeoJsonFileReader(); var data = reader.Read(".\\routedata.geojson"); watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; Save(data, "data.txt"); //var dsf = Read("data.txt"); }
private Route MergeTwoRoutes(Route route1, Route route2) { var data = new RouteData() { Type = route1.Data.Type }; var info = new RouteInfo() { Length = route1.Info.Length + route2.Info.Length }; var result = new Route() { Data = data, Info = info }; var coordinates = new List <double[]>(); if (Enumerable.SequenceEqual(route1.Data.Coordinates.Last(), route2.Data.Coordinates.First())) { coordinates.AddRange(route1.Data.Coordinates); coordinates.AddRange(route2.Data.Coordinates); } else if (Enumerable.SequenceEqual(route1.Data.Coordinates.Last(), route2.Data.Coordinates.Last())) { coordinates.AddRange(route2.Data.Coordinates); coordinates.Reverse(); coordinates.InsertRange(0, route1.Data.Coordinates); } else if (Enumerable.SequenceEqual(route1.Data.Coordinates.First(), route2.Data.Coordinates.First())) { coordinates.AddRange(route1.Data.Coordinates); coordinates.Reverse(); coordinates.AddRange(route2.Data.Coordinates); } else if (Enumerable.SequenceEqual(route1.Data.Coordinates.First(), route2.Data.Coordinates.Last())) { coordinates.AddRange(route2.Data.Coordinates); coordinates.AddRange(route1.Data.Coordinates); } else { coordinates.AddRange(route1.Data.Coordinates); route2.Data.Coordinates = route2.Data.Coordinates.Reverse().ToArray(); for (int i = 0; i < route2.Data.Coordinates.Length; i++) { if (coordinates.Any(x => Enumerable.SequenceEqual(x, route2.Data.Coordinates[i]))) { continue; } route2.Data.Coordinates = route2.Data.Coordinates.Skip(i == 0? 0 : i - 1).ToArray(); return(MergeTwoRoutes(route1, route2)); } } result.Data.Coordinates = coordinates.ToArray(); result.Info.Length = Math.Round(GeoJsonFileReader.CalculateLength(result.Data.Coordinates), 2); return(result); }