Esempio n. 1
0
        public void TestTerrainAlongGreatArcRoute()
        {
            var request = new GreatArcRouteData(2);

            request.Waypoints[0].Position = new ServiceCartographic
            {
                Altitude  = 20000.0,
                Latitude  = 39.07096,
                Longitude = -104.78509
            };
            request.Waypoints[0].Time = new DateTime(2014, 02, 10, 10, 30, 0);

            request.Waypoints[1].Position = new ServiceCartographic
            {
                Altitude  = 100.0,
                Latitude  = 42.64541,
                Longitude = -61.11172
            };
            request.Waypoints[1].Time   = new DateTime(2014, 02, 10, 18, 30, 20);
            request.OutputSettings.Step = 3600;
            request.OutputSettings.CoordinateFormat.Coord = CoordinateRepresentation.XYZ;

            var result = TerrainServices.GetTerrainHeightsAlongARoute <GreatArcRouteData>(request).Result;

            Assert.That(result != null);
            Assert.That(result.Count == 10);
            Assert.AreEqual(2286.85181f, result[0].TerrainHeightFromMeanSeaLevel);
            Assert.AreEqual(-16.9748859f, result[0].MeanSeaLevelHeightFromWgs84);
            Assert.AreEqual(2269.87671f, result[0].TerrainHeightFromWgs84);
        }
        public void TestLinkBudgetsAlongAPath()
        {
            var Frequency = 14500000000.0;
            var Power     = 1000.0;
            var DataRate  = 16000000.0;
            var Bandwidth = 20000000.0;

            var request = new CommunicationData();

            request.OutputUnits = OutputUnit.Decibels;
            // Transmitter
            var td = new TransmitterData();
            var sd = new SiteData();

            sd.Location         = new ServiceCartographic(42.0, -105.0, 2000.0);
            sd.MeanSeaLevel     = true;
            td.Path             = sd;
            td.PathRouteType    = RouteTypes.FixedSite;
            td.Frequency        = Frequency;
            td.Power            = Power;
            td.DataRate         = DataRate;
            request.Transmitter = td;
            // Interference Sources
            var jammer1     = new TransmitterData();
            var jammer1Path = new SiteData();

            jammer1Path.Location     = new ServiceCartographic(42.001, -105.0, 1900);
            jammer1Path.MeanSeaLevel = true;
            jammer1.Path             = jammer1Path;
            jammer1.PathRouteType    = RouteTypes.FixedSite;
            jammer1.Frequency        = Frequency;
            jammer1.Power            = Power;
            jammer1.DataRate         = DataRate;

            var jammer2     = new TransmitterData();
            var jammer2Path = new SiteData();

            jammer2Path.Location     = new ServiceCartographic(41.997, -105.0, 1900);
            jammer2Path.MeanSeaLevel = true;
            jammer2.Path             = jammer1Path;
            jammer2.PathRouteType    = RouteTypes.FixedSite;
            jammer2.Frequency        = Frequency;
            jammer2.Power            = Power;
            jammer2.DataRate         = DataRate;

            request.InterferenceSources = new List <TransmitterData>();
            request.InterferenceSources.Add(jammer1);
            request.InterferenceSources.Add(jammer2);
            // Receiver
            var receiver     = new ReceiverData();
            var receiverPath = new GreatArcRouteData(2);

            receiverPath.Waypoints[0].Position                 = new ServiceCartographic(41, -105.0, 2000.0);
            receiverPath.Waypoints[0].Time                     = new DateTimeOffset(2016, 02, 23, 4, 44, 0, new TimeSpan(0));
            receiverPath.Waypoints[1].Position                 = new ServiceCartographic(43, -104.0, 2000.0);
            receiverPath.Waypoints[1].Time                     = new DateTimeOffset(2016, 02, 23, 5, 44, 0, new TimeSpan(0));
            receiverPath.OutputSettings.Step                   = 900;
            receiverPath.OutputSettings.TimeFormat             = TimeRepresentation.UTC;
            receiverPath.OutputSettings.CoordinateFormat.Coord = CoordinateRepresentation.LLA;
            receiverPath.OutputSettings.CoordinateFormat.Frame = FrameRepresentation.Fixed;
            receiver.Path                 = receiverPath;
            receiver.PathRouteType        = RouteTypes.GreatArc;
            receiver.TargetFrequency      = Frequency;
            receiver.Bandwidth            = Bandwidth;
            receiver.AmplifierGain        = 100;
            receiver.NoiseFactor          = 2.0;
            receiver.ReferenceTemperature = 16.85;
            request.Receiver              = receiver;
            // Other settings
            request.UseTirem = true;
            request.TiremSettings.SurfaceHumidity     = 10.0;
            request.TiremSettings.SurfaceRefractivity = 200.0;

            // dump the request to see the JSON created
            //File.WriteAllText(@".\CommRequest.json",request.ToString());

            var commResult = CommunicationServices.GetLinkBudget(request).Result;

            Assert.That(commResult != null);
            Assert.That(commResult.LinkBudgets != null);
            Assert.That(commResult.LinkBudgets.Count == 5);
            Assert.AreEqual(0.499, commResult.LinkBudgets[0].BitErrorRate, 1e-3);
        }