public void t1_TemporalGrid() { var reader = new TrajectoryFileReader(CoordinateUnit.metric); var trajectory = reader.createTrajectoryFromFile(Globals.testdataDirectory + "test_track.dat"); Aircraft aircraft = new Aircraft("GP7270", "wing"); noiseModel = new IntegratedNoiseModel(trajectory, aircraft); noiseModel.StartCalculation(INMCompleted); while (!completed) { } TemporalGrid temporalGrid = noiseModel.TemporalGrid; int numberOfGrids = temporalGrid.GetNumberOfGrids(); Assert.AreNotEqual(0, numberOfGrids); Grid temp = new Grid(new double[1][] { new double[] { 0 } }, null); temporalGrid.AddGrid(temp); Assert.IsNotNull(temporalGrid.GetGrid(0)); Assert.AreEqual(numberOfGrids + 1, temporalGrid.GetNumberOfGrids()); Assert.AreEqual(temp, temporalGrid.GetGrid(numberOfGrids)); completed = false; }
public void RunINMFullTrajectory() { TemporalGrid = new TemporalGrid(); TemporalGrid.Interval = 1; CreateTrajectoryFile(); CreateGridFile(); ExecuteINMTM(); if (PopulatedAreaNoise != null) { ReadPopulatedAreaNoise(); } else { double[][] noiseData = ReadNoiseData(); Grid grid = NoiseDataToGrid(noiseData, !_mapToLargerGrid); if (_mapToLargerGrid) { Console.WriteLine(_lowerLeftPoint.X + "," + _lowerLeftPoint.Y); Console.WriteLine(_upperRightPoint.X + "," + _upperRightPoint.Y); grid = Grid.MapOnLargerGrid(grid, _lowerLeftPoint, _upperRightPoint); } grid.ReferencePoint = ReferencePoint; TemporalGrid.AddGrid(grid); } }
public void StartCalculation(Action <double> progressChangedCallback) { CreateGridFile(); TemporalGrid = new TemporalGrid(); TemporalGrid.Interval = 1; double progress = 0; for (int t = 0; t <= _trajectory.Duration; t++) { if (IntegrateToCurrentPosition) { CreateTrajectoryToCurrentPosition(t); } else { CreatePositionFile(t); } ExecuteINMTM(); double[][] noiseData = ReadNoiseData(); Grid grid = NoiseDataToGrid(noiseData, !_mapToLargerGrid); if (_mapToLargerGrid) { grid = Grid.MapOnLargerGrid(grid, _lowerLeftPoint, _upperRightPoint); } TemporalGrid.AddGrid(grid); progress = (t / (double)_trajectory.Duration) * 100; progressChangedCallback(progress); } progress = 100; progressChangedCallback(progress); }
private void TopView_Load(object sender, EventArgs e) { // Parse the file containing multiple trajectories string rawTrackData = File.ReadAllText(Globals.currentDirectory + "inbound.txt"); var _trackData = rawTrackData .Split('\n') .Select(q => q.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries) .Select(Convert.ToString) .ToArray() ) .ToArray(); // Define variables string flight_id = ""; var trajectories = new List <Trajectory>(); ReferencePoint referencePoint = new ReferencePoint(new GeoPoint3D(4.7066753, 52.3297923)); TrajectoryGenerator trajectoryGenerator = new TrajectoryGenerator(new Aircraft("GP7270", "wing"), referencePoint); // Loop through the positions of all trajectories for (int i = 0; i < _trackData.Length; i++) { // Switch to the next trajectory if (i == _trackData.Length - 1 || (_trackData[i][0] != flight_id && i > 0)) { trajectories.Add(trajectoryGenerator.GenerateTrajectory()); // Prepare next trajectory var aircraft = new Aircraft("GP7270", "wing"); trajectoryGenerator = new TrajectoryGenerator(aircraft, referencePoint); } // Prevent failing on empty lines if (_trackData[i].Count() == 0) { continue; } flight_id = _trackData[i][0]; // Parse the next position of the current trajectory //DateTime t = DateTime.Parse(_trackData[i][14]); double x = 0; double.TryParse(_trackData[i][4], out x); double y = 0; double.TryParse(_trackData[i][5], out y); double z = 0; double.TryParse(_trackData[i][6], out z); z = z * 0.3040 * 100; trajectoryGenerator.AddDatapoint(x, y, z, 200, 200000); } // Calculate the noise for each trajectory TemporalGrid temporalGrid = new TemporalGrid(); int counter = 0; foreach (Trajectory trajectory in trajectories) { counter++; Console.WriteLine(counter); if (counter > 15) { break; } var INM = new IntegratedNoiseModel(trajectory, trajectory.Aircraft); INM.RunINMFullTrajectory(); Grid grid = INM.TemporalGrid.GetGrid(0); Console.WriteLine(grid.LowerLeftCorner.X); Console.WriteLine(grid.LowerLeftCorner.Y); grid.ReferencePoint = referencePoint; temporalGrid.AddGrid(grid); } var camera = new TopViewKMLAnimatorCamera(new GeoPoint3D(4.7066753, 52.3297923, 22000)); var sections = new List <KMLAnimatorSectionInterface>() { new ContourKMLAnimator(temporalGrid), new MultipleGroundplotKMLAnimator(trajectories) }; var animator = new KMLAnimator(sections, camera); animator.Duration = 0; animator.AnimationToFile(temporalGrid.GetNumberOfGrids(), Globals.currentDirectory + "topview_fullpath.kml"); }
protected void MultipleTrajectoriesINM() { var reader = new TrajectoriesFileReader(); /* * if (TrajectoryFitness.trajectories != null) * { * trajectories = TrajectoryFitness.trajectories; * VisualiseOptimisation = true; * return; * } else * { */ trajectories = reader.CreateFromFile(_view.TrajectoryFile, referencePoint); //} /* * _view.Invoke(delegate { _view.NoiseCalculationCompleted(); }); * return; */ // Calculate the noise for each trajectory temporalGrid = new TemporalGrid(); int counter = 0; foreach (Trajectory trajectory in trajectories) { double percentage = (double)counter / trajectories.Count * 100.0; ProgressChanged(percentage); Console.WriteLine("INM " + counter + " started"); //if (counter > 3) { break; } var INM = new IntegratedNoiseModel(trajectory, trajectory.Aircraft); INM.CellSize = 125; INM.MapToLargerGrid(reader.LowerLeftPoint, reader.UpperRightPoint); INM.MaxDistanceFromAirport(referencePoint.Point, 100000); INM.IntegrateToCurrentPosition = true; INM.NoiseMetric = 0; if (_view.NoiseMetric == 1) { INM.NoiseMetric = 1; } INM.RunINMFullTrajectory(); Grid grid = INM.TemporalGrid.GetGrid(0); Console.WriteLine(grid.Data.Length + "x" + grid.Data[0].Length); grid.ReferencePoint = referencePoint; temporalGrid.AddGrid(grid); Console.WriteLine("INM " + counter + " completed"); counter++; } GridConverter converter; switch (_view.NoiseMetric) { case 0: converter = new GridConverter(temporalGrid, GridTransformation.LDEN); temporalGrid = converter.Transform(); break; case 1: converter = new GridConverter(temporalGrid, GridTransformation.SEL); temporalGrid = converter.Transform(); break; } _view.Invoke(delegate { _view.NoiseCalculationCompleted(); }); }