コード例 #1
0
        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;
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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");
        }
コード例 #5
0
        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(); });
        }