Example #1
0
        private void CalcMGRS()
        {
            try
            {
                LbL_Error.Visible = false;

                if (CheckAndMarkMGRS())
                {
                    string latz         = TB_MGRS_NorthGrid.Text.ToUpperInvariant();
                    int    lonz         = int.Parse(TB_MGRS_EastGrid.Text);
                    string digraph      = TB_MGRS_SubgridIdent.Text.ToUpperInvariant();
                    string fractionText = TB_MGRS_Fraction.Text.Replace(" ", "");
                    double easting      = double.Parse(fractionText.Substring(0, fractionText.Length / 2).PadRight(5, '0'));
                    double northing     = double.Parse(fractionText.Substring(fractionText.Length / 2).PadRight(5, '0'));

                    CoordinateSharp.MilitaryGridReferenceSystem mgrs = new CoordinateSharp.MilitaryGridReferenceSystem(latz: latz, longz: lonz, d: digraph, e: easting, n: northing);
                    input = CoordinateSharp.MilitaryGridReferenceSystem.MGRStoLatLong(mgrs);
                    DisplayCoordinates();
                }
            }
            catch (Exception e)
            {
                LbL_Error.Visible = true;
                LbL_Error.Text    = e.Message;
            }
        }
Example #2
0
        private void CalcLL()
        {
            try
            {
                LbL_Error.Visible = false;

                if (CheckAndMarkLL())
                {
                    double lat = 0.0;
                    double lon = 0.0;
                    // get Lat
                    {
                        string strLat = TB_LL_Lat.Text; // Lat = N/S
                        strLat = strLat.Replace("°", string.Empty).Replace("'", string.Empty).Replace("\"", string.Empty).Replace(" ", string.Empty).Trim();
                        double deg = int.Parse(strLat.Substring(0, 2), System.Globalization.CultureInfo.InvariantCulture);
                        double min = int.Parse(strLat.Substring(2, 2), System.Globalization.CultureInfo.InvariantCulture);
                        double sec = double.Parse(strLat.Substring(4), System.Globalization.CultureInfo.InvariantCulture);

                        lat = (RB_LL_N.Checked ? 1 : -1) * (deg + (min / 60) + (sec / 3600));
                    }
                    // get Lon
                    {
                        string strLon = TB_LL_Lon.Text; // Lon = E/W
                        strLon = strLon.Replace("°", string.Empty).Replace("'", string.Empty).Replace("\"", string.Empty).Replace(" ", string.Empty).Trim();
                        double deg = int.Parse(strLon.Substring(0, 3), System.Globalization.CultureInfo.InvariantCulture);
                        double min = int.Parse(strLon.Substring(3, 2), System.Globalization.CultureInfo.InvariantCulture);
                        double sec = double.Parse(strLon.Substring(5), System.Globalization.CultureInfo.InvariantCulture);

                        lon = (RB_LL_E.Checked ? 1 : -1) * (deg + (min / 60) + (sec / 3600));
                    }

                    input = new CoordinateSharp.Coordinate(lat, lon);
                    DisplayCoordinates();
                }
            }
            catch (Exception e)
            {
                LbL_Error.Visible = true;
                LbL_Error.Text    = e.Message;
            }
        }
Example #3
0
        private void CalcBulls()
        {
            try
            {
                LbL_Error.Visible = false;

                if (CheckAndMarkBulls())
                {
                    double bearing = double.Parse(TB_Bulls_Bearing.Text);
                    double range   = double.Parse(TB_Bulls_Range.Text);

                    input = bulls.GetOffsetPosition(new BRA(bearing: bearing, range: range));
                    DisplayCoordinates();
                }
            }
            catch (Exception e)
            {
                LbL_Error.Visible = true;
                LbL_Error.Text    = e.Message;
            }
        }
Example #4
0
 private void CreateMarkerAndDeclarationFiles(int flightNumber)
 {
     foreach (Track track in flight.Tracks)
     {
         using (StreamWriter writer = new StreamWriter($@"{Path.Combine(tbCompetitionFolder.Text, "Scoring", $"Flight{flightNumber:D2}", "Pilots", $"Pilot{track.Pilot.PilotNumber:D3}{(!string.IsNullOrWhiteSpace(track.Pilot.FirstName) ? $"_{track.Pilot.FirstName}_{track.Pilot.LastName}" : "")}.csv")}", false))
         {
             string markerHeader = "Marker Number, Time Stamp, Latitude[dec], Longitude[dec], Latitude[deg], Longitude[deg], UTM Zone, Easting, Norting, Altitude GPS[m], Altitude Barometric[m]";
             writer.WriteLine(markerHeader);
             foreach (MarkerDrop marker in track.MarkerDrops)
             {
                 string timeStamp = marker.MarkerLocation.TimeStamp.ToString("dd.MM.yyyy HH:mm:ss");
                 CoordinateSharp.Coordinate coordinateSharp = new CoordinateSharp.Coordinate(marker.MarkerLocation.Latitude, marker.MarkerLocation.Longitude);
                 string line = string.Join(',', marker.MarkerNumber, timeStamp, marker.MarkerLocation.Latitude, marker.MarkerLocation.Longitude,
                                           coordinateSharp.Latitude.Display, coordinateSharp.Longitude.Display, coordinateSharp.UTM.LongZone + coordinateSharp.UTM.LatZone,
                                           coordinateSharp.UTM.Easting, coordinateSharp.UTM.Northing, marker.MarkerLocation.AltitudeGPS, marker.MarkerLocation.AltitudeBarometric);
                 writer.WriteLine(line);
             }
             writer.WriteLine();
             writer.WriteLine();
             writer.WriteLine();
             string declarationHeader = "Declaration Number,Time Stamp,Position Latitude[dec],Position Longitude[dec],Position Latitude[deg],Position Longitude[deg],Position Altitude GPS[m],Position Altitude Barometric[m],Position UTM Zone,Position Easting,Position Norting,Goal Latitude[dec],Goal Longitude[dec],Goal Latitude[deg],Goal Longitude[deg],Goal UTM Zone,Goal Easting,Goal Norting,Goal Altitude GPS m],Goal Altitude Barometric[m]";
             writer.WriteLine(declarationHeader);
             foreach (DeclaredGoal declaredGoal in track.DeclaredGoals)
             {
                 string timeStamp = declaredGoal.PositionAtDeclaration.TimeStamp.ToString("dd.MM.yyyy HH:mm:ss");
                 CoordinateSharp.Coordinate posCoordinate  = new CoordinateSharp.Coordinate(declaredGoal.PositionAtDeclaration.Latitude, declaredGoal.PositionAtDeclaration.Longitude);
                 CoordinateSharp.Coordinate goalCoordinate = new CoordinateSharp.Coordinate(declaredGoal.GoalDeclared.Latitude, declaredGoal.GoalDeclared.Longitude);
                 string line = string.Join(',', declaredGoal.GoalNumber, timeStamp, declaredGoal.PositionAtDeclaration.Latitude,
                                           declaredGoal.PositionAtDeclaration.Longitude, posCoordinate.Latitude.Display, posCoordinate.Longitude.Display,
                                           posCoordinate.UTM.LongZone + posCoordinate.UTM.LatZone, posCoordinate.UTM.Easting, posCoordinate.UTM.Northing,
                                           declaredGoal.PositionAtDeclaration.AltitudeGPS, declaredGoal.PositionAtDeclaration.AltitudeBarometric,
                                           declaredGoal.GoalDeclared.Latitude, declaredGoal.GoalDeclared.Longitude, goalCoordinate.Latitude.Display,
                                           goalCoordinate.Longitude.Display, goalCoordinate.UTM.LongZone + goalCoordinate.UTM.LatZone, goalCoordinate.UTM.Easting,
                                           goalCoordinate.UTM.Northing, declaredGoal.GoalDeclared.AltitudeGPS, declaredGoal.GoalDeclared.AltitudeBarometric);
                 writer.WriteLine(line);
             }
         }
     }
 }
Example #5
0
        private void CalcUTM()
        {
            try
            {
                LbL_Error.Visible = false;

                if (CheckAndMarkUTM())
                {
                    string latz     = TB_UTM_NorthGrid.Text.ToUpperInvariant();
                    int    lonz     = int.Parse(TB_UTM_EastGrid.Text);
                    double easting  = double.Parse(TB_UTM_Easting.Text);
                    double northing = double.Parse(TB_UTM_Northing.Text);

                    CoordinateSharp.UniversalTransverseMercator utm = new CoordinateSharp.UniversalTransverseMercator(latz: latz, longz: lonz, est: easting, nrt: northing);
                    input = CoordinateSharp.UniversalTransverseMercator.ConvertUTMtoLatLong(utm);
                    DisplayCoordinates();
                }
            }
            catch (Exception e)
            {
                LbL_Error.Visible = true;
                LbL_Error.Text    = e.Message;
            }
        }
Example #6
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();
        }