Beispiel #1
0
        public bool ParseTrackFiles(string path, bool useBalloonLiveParse)
        {
            string        functionErrorMessage = "Failed to parse track files: ";
            DirectoryInfo directoryInfo        = new DirectoryInfo($@"{path}");

            if (!directoryInfo.Exists)
            {
                Log(LogSeverityType.Error, functionErrorMessage + $"Directory '{path}' does not exists");
            }
            FileInfo[] trackFiles = directoryInfo.GetFiles("*.igc");
            flight.Tracks.Clear();
            foreach (FileInfo trackFile in trackFiles)
            {
                Track track;
                bool  trackIsValid = true;
                if (useBalloonLiveParse)
                {
                    if (!BalloonLiveParser.ParseFile(trackFile.FullName, out track))
                    {
                        Log(LogSeverityType.Error, functionErrorMessage + $"Track from '{trackFile.FullName}' won't be used for further processing");
                        trackIsValid = false;
                    }
                }
                else
                {
                    if (!FAILoggerParser.ParseFile(trackFile.FullName, out track))
                    {
                        Log(LogSeverityType.Error, functionErrorMessage + $"Track from '{trackFile.FullName}' won't be used for further processing");
                        trackIsValid = false;
                    }
                }
                if (trackIsValid)
                {
                    Tracks.Add(track);
                }
            }
            return(true);
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            //Track trackOriginal;
            //if (!BallonLiveParser.ParseFile(@"C:\Users\Micha\Source\repos\BalloonTrackAnalyze\TestTrack\E94BC98E-001-20611105838 - Original.igc", out trackOriginal))
            //{
            //    Console.WriteLine("Error parsing track");
            //}

            //double distance2D = CoordinateHelpers.CalculateDistance2D(trackOriginal.TrackPoints[100], trackOriginal.TrackPoints[101]);
            //Console.WriteLine("2D Distance:"+distance2D);
            //double distance3D = CoordinateHelpers.CalculateDistance3D(trackOriginal.TrackPoints[100], trackOriginal.TrackPoints[101],true);
            //Console.WriteLine("3D Distance:" + distance3D);
            Coordinate home = new Coordinate(48.735996605840015, 9.100416159912585, 0.0, 0.0, DateTime.Now);

            CoordinateSharp.Coordinate coordinate1 = new CoordinateSharp.Coordinate(51.017558333333, 4.0108133333333);

            double easting  = Math.Round(coordinate1.UTM.Easting, 0, MidpointRounding.AwayFromZero);
            double northing = Math.Round(coordinate1.UTM.Northing, 0, MidpointRounding.AwayFromZero);
            string latZone  = coordinate1.UTM.LatZone;
            int    longZone = coordinate1.UTM.LongZone;

            //double northingNorth = Math.Round(northing + 1000,0,MidpointRounding.AwayFromZero);
            //double northingSouth = Math.Round(northing - 1000,0,MidpointRounding.AwayFromZero);

            //double eastingEast = Math.Round(easting + 1000,0,MidpointRounding.AwayFromZero);
            //double eastingWest = Math.Round(easting - 1000, 0, MidpointRounding.AwayFromZero);

            CoordinateSharp.UniversalTransverseMercator universalTransverseMercator = new CoordinateSharp.UniversalTransverseMercator("U31", 577486, 5668346);

            double[] latLong = CoordinateSharp.UniversalTransverseMercator.ConvertUTMtoSignedDegree(universalTransverseMercator);

            Console.WriteLine($"Marker 2 (UTM): {latZone}{longZone} {easting} {northing}");
            Console.WriteLine($"Marker 2 (lat/long): {latLong[0]}N {latLong[1]}E");
            //Console.WriteLine($"Goal East (UTM): {latZone}{longZone} {eastingEast} {northing}");
            //Console.WriteLine($"Goal South (UTM): {latZone}{longZone} {easting} {northingSouth}");
            //Console.WriteLine($"Goal West (UTM): {latZone}{longZone} {eastingWest} {northing}");

            //Coordinate goalNorth = CoordinateHelpers.CalculatePointWithDistanceAndBearing(home, 1000, 0.0);
            //Coordinate goalEast = CoordinateHelpers.CalculatePointWithDistanceAndBearing(home, 1000, 90.0);
            //Coordinate goalSouth = CoordinateHelpers.CalculatePointWithDistanceAndBearing(home, 1000, 180.0);
            //Coordinate goalWest = CoordinateHelpers.CalculatePointWithDistanceAndBearing(home, 1000, 270.0);

            //CoordinateSharp.Coordinate coordinateGoalNorth = new CoordinateSharp.Coordinate(goalNorth.Latitude, goalNorth.Longitude);
            //CoordinateSharp.Coordinate coordinateGoalEast = new CoordinateSharp.Coordinate(goalEast.Latitude, goalEast.Longitude);
            //CoordinateSharp.Coordinate coordinateGoalSouth = new CoordinateSharp.Coordinate(goalSouth.Latitude, goalSouth.Longitude);
            //CoordinateSharp.Coordinate coordinateGoalWest = new CoordinateSharp.Coordinate(goalWest.Latitude, goalWest.Longitude);

            //Console.WriteLine(coordinateGoalNorth.UTM.ToString());
            //Console.WriteLine(coordinateGoalEast.UTM.ToString());
            //Console.WriteLine(coordinateGoalSouth.UTM.ToString());
            //Console.WriteLine(coordinateGoalWest.UTM.ToString());



            //Stopwatch stopwatch = new Stopwatch();
            //stopwatch.Start();
            //string trackFileName = @"C:\Users\Micha\Source\repos\BalloonTrackAnalyze\TestTrack\5AD_f003_p002_l0.igc";
            string trackFileName = @"E:\BLC2021\SynologyDrive\tracks\Flight 1\work\E[BLC21]F[1]P[20]-6DD95BC6-020.igc";
            Track  track;

            if (!BalloonLiveParser.ParseFile(trackFileName, out track))
            {
                Console.WriteLine("Error parsing logger track");
            }

            //string reportFileName = Path.Combine(Path.GetDirectoryName(trackFileName), Path.GetFileNameWithoutExtension(trackFileName) + ".xlsx");

            ////TrackReportGenerator.GenerateTrackReport(reportFileName, track,true);
            //stopwatch.Stop();

            //Console.WriteLine($"Time for parsing track file and generate report: {stopwatch.Elapsed:mm\\:ss}");
            //DonutTask donutTask = new DonutTask();

            //donutTask.SetupDonut(-1, 2, 1, 300, 500, 50, double.NaN, true, null);

            //string donut=JsonConvert.SerializeObject(donutTask,Formatting.Indented);

            //using (StreamWriter writer = new StreamWriter(@"./donutConfig.json"))
            //{
            //    writer.Write(donut);
            //}

            CoordinateSharp.UniversalTransverseMercator utm = new CoordinateSharp.UniversalTransverseMercator("32U", 567000, 5489000);
            CoordinateSharp.Coordinate coordinate           = CoordinateSharp.UniversalTransverseMercator.ConvertUTMtoLatLong(utm);

            Console.WriteLine(coordinate.Latitude);
            Console.WriteLine(ToProperText(coordinate.Latitude));

            //int[] array =new int[6]{ 1,2,3,4,5,6};

            //for (int index = 0; index < array.Length; index++)
            //{
            //    for (int iterator = index+1; iterator < array.Length; iterator++)
            //    {
            //        Console.WriteLine($"{array[index]}->{array[iterator]}");
            //    }
            //}
            //Coordinate declaredGoal = new Coordinate(coordinate.Latitude.DecimalDegree, coordinate.Longitude.DecimalDegree, double.NaN, double.NaN, DateTime.Now);
            //faiLogger.DeclaredGoals.Add(new DeclaredGoal(2, declaredGoal, declaredGoal));

            //DonutTask donut = new DonutTask();
            //donut.GoalNumber = 2;
            //donut.InnerRadius = 250;
            //donut.OuterRadius = 750;
            //donut.UpperBoundary = double.NaN;
            //donut.IsReentranceAllowed = true;
            //donut.LowerBoundary = CoordinateHelpers.ConvertToMeter(3200);
            //donut.DeclarationValidationRules = new List<IDeclarationValidationRules>();

            //double donutResult;
            //if (!donut.CalculateResults(faiLogger, true, out donutResult))
            //{
            //    Console.WriteLine("Failed to calculate donut result");
            //}
            //else
            //{
            //    Console.WriteLine("Result Donut:"+donutResult);
            //}

            //PieTask pie = new PieTask();
            //pie.Tiers = new List<PieTask.PieTier>();

            //PieTask.PieTier tier1 = new PieTask.PieTier();
            //tier1.DeclarationValidationRules = new List<IDeclarationValidationRules>();
            //tier1.IsReentranceAllowed = true;
            //tier1.Multiplier = 1.0;
            //tier1.LowerBoundary = CoordinateHelpers.ConvertToMeter(3500);
            //tier1.UpperBoundary = double.NaN;
            //tier1.Radius = 500;
            //tier1.GoalNumber = 3;
            //pie.Tiers.Add(tier1);

            //utm= new CoordinateSharp.UniversalTransverseMercator("32U", 567950, 5489300);
            //coordinate = CoordinateSharp.UniversalTransverseMercator.ConvertUTMtoLatLong(utm);
            //Coordinate centerTier1 = new Coordinate(coordinate.Latitude.DecimalDegree, coordinate.Longitude.DecimalDegree, double.NaN, double.NaN, DateTime.Now);
            //faiLogger.DeclaredGoals.Add(new DeclaredGoal(3, centerTier1, centerTier1));

            //PieTask.PieTier tier2 = new PieTask.PieTier();
            //tier2.DeclarationValidationRules = new List<IDeclarationValidationRules>();
            //tier2.IsReentranceAllowed = true;
            //tier2.Multiplier = 1.0;
            //tier2.LowerBoundary = CoordinateHelpers.ConvertToMeter(3500);
            //tier2.UpperBoundary = double.NaN;
            //tier2.Radius = 500;
            //tier2.GoalNumber = 4;
            //pie.Tiers.Add(tier2);

            //utm = new CoordinateSharp.UniversalTransverseMercator("32U", 567950, 5488700);
            //coordinate = CoordinateSharp.UniversalTransverseMercator.ConvertUTMtoLatLong(utm);
            //Coordinate centerTier2 = new Coordinate(coordinate.Latitude.DecimalDegree, coordinate.Longitude.DecimalDegree, double.NaN, double.NaN, DateTime.Now);
            //faiLogger.DeclaredGoals.Add(new DeclaredGoal(4, centerTier2, centerTier2));

            //PieTask.PieTier tier3 = new PieTask.PieTier();
            //tier3.DeclarationValidationRules = new List<IDeclarationValidationRules>();
            //tier3.IsReentranceAllowed = true;
            //tier3.Multiplier = 3.0;
            //tier3.LowerBoundary = CoordinateHelpers.ConvertToMeter(3800);
            //tier3.UpperBoundary = double.NaN;
            //tier3.Radius = 250;
            //tier3.GoalNumber = 5;
            //pie.Tiers.Add(tier3);

            //utm = new CoordinateSharp.UniversalTransverseMercator("32U", 568550, 5489000);
            //coordinate = CoordinateSharp.UniversalTransverseMercator.ConvertUTMtoLatLong(utm);
            //Coordinate centerTier3 = new Coordinate(coordinate.Latitude.DecimalDegree, coordinate.Longitude.DecimalDegree, double.NaN, double.NaN, DateTime.Now);
            //faiLogger.DeclaredGoals.Add(new DeclaredGoal(5, centerTier3, centerTier3));

            //double pieResult;
            //if (!pie.CalculateResults(faiLogger, true, out pieResult))
            //{
            //    Console.WriteLine("Failed to calculate pie result");
            //}
            //else
            //{
            //    Console.WriteLine("Result pie:"+pieResult);
            //}
            //CoordinateSharp.Coordinate coordinate1 = new CoordinateSharp.Coordinate(49.550316666666667, 9.92055);
            //Console.WriteLine(coordinate1.UTM.Easting);
            //Console.WriteLine(coordinate1.UTM.Northing);

            //Track track4x4;
            //if (!IGCParser.ParseFile(@"C:\Users\Micha\Source\repos\BalloonTrackAnalyze\TestTrack\E94BC98E-001-20611105838 - 4x4.igc", out track4x4))
            //{
            //    Console.WriteLine("Error parsing track");
            //}

            //double latitude = trackOriginal.DeclaredGoals[1].GoalDeclared.Latitude;
            //double longitude = trackOriginal.DeclaredGoals[1].GoalDeclared.Longitude;
            //CoordinateSharp.Coordinate coordinate = new CoordinateSharp.Coordinate(latitude,longitude);
            //string gridZone = coordinate.UTM.LongZone + coordinate.UTM.LatZone;
            //Console.WriteLine("Long/Lat (min):" + coordinate);
            //Console.WriteLine("Long/Lat (degree):" + latitude + "N " + longitude + "E");
            //Console.WriteLine("UTM:" + gridZone + coordinate.UTM.Northing + "N " + coordinate.UTM.Easting + "E");

            Console.ReadLine();
        }