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; } }
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; } }
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; } }
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); } } } }
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; } }
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(); }