public void SolarLightingAlongARoute() { var route = new PointToPointRouteData(); route.Waypoints.Add(new ServiceCartographicWithTime { Position = new ServiceCartographic(39.07096, -75.78509, 600.0), Time = new DateTimeOffset(2014, 03, 25, 18, 30, 0, new TimeSpan(0, 0, 0)) }); route.Waypoints.Add(new ServiceCartographicWithTime { Position = new ServiceCartographic(42.06308, -75.7850, 620.0), Time = new DateTimeOffset(2014, 03, 25, 23, 30, 20, new TimeSpan(0, 0, 0)) }); var solarData = new SolarLightingData <PointToPointRouteData> { Path = route, OutputTimeOffset = -4.0f }; var result = LightingServices.GetLightingAlongARoute(solarData).Result; // setup expected dates, then test var sunset = new DateTimeOffset(2014, 3, 25, 19, 20, 03, 664, new TimeSpan(-4, 0, 0)); Assert.AreEqual(sunset.ToUnixTimeMilliseconds(), result.FlightLightingInfo.Sunset.ToUnixTimeMilliseconds()); Assert.IsFalse(result.SunriseBetweenStartAndEnd); Assert.IsTrue(result.SunsetBetweenStartAndEnd); Assert.AreEqual("Daylight", result.BeginningOfFlightLightingCondition); Assert.AreEqual("CivilTwilight", result.EndOfFlightLightingCondition); }
public void TestSolarAngles() { var request = new SolarLightingData <SiteData>(); request.Path = new SiteData(); request.Path.Location.Latitude = 39.0; request.Path.Location.Longitude = -104.77; request.Path.Location.Altitude = 1910; request.AnalysisStart = new DateTime(2018, 5, 5); request.AnalysisStop = new DateTime(2018, 5, 5); request.OutputTimeOffset = -6.0f; var lightingResult = LightingServices.GetSolarAnglesAtASite(request).Result; Assert.That(lightingResult != null); }
public void SolarAngles_SiteSolarAngles() { var site = new SiteData { Location = new ServiceCartographic(39.0, -75.77, 0) }; site.OutputSettings.Step = 7200; var solarData = new SolarLightingData <SiteData> { Path = site, AnalysisStart = new DateTimeOffset(2018, 4, 9, 11, 0, 0, new TimeSpan(0, 0, 0)), AnalysisStop = new DateTimeOffset(2018, 4, 9, 23, 0, 0, new TimeSpan(0, 0, 0)), OutputTimeOffset = -4.0f }; var angles = LightingServices.GetSolarAnglesAtASite(solarData).Result; Assert.That(angles.Count == 7); // Validated against STK Components var firstAzimuth = 83.31917202200728; var lastAzimuth = 275.3959413062687; var firstElevation = 3.8993683721190497; var lastElevation = 5.791008759822339; var midAzimuth = 177.80736204126316; var midElevation = 58.7187946597877; var firstTime = new DateTimeOffset(2018, 4, 9, 11, 0, 0, new TimeSpan(0, 0, 0)); var midTime = new DateTimeOffset(2018, 4, 9, 17, 0, 0, new TimeSpan(0, 0, 0)); var lastTime = new DateTimeOffset(2018, 4, 9, 23, 0, 0, new TimeSpan(0, 0, 0)); Assert.AreEqual(firstTime, angles[0].Time); Assert.AreEqual(firstAzimuth, angles[0].Azimuth); Assert.AreEqual(firstElevation, angles[0].Elevation); Assert.AreEqual(midTime, angles[3].Time); Assert.AreEqual(midAzimuth, angles[3].Azimuth); Assert.AreEqual(midElevation, angles[3].Elevation); Assert.AreEqual(lastTime, angles[6].Time); Assert.AreEqual(lastAzimuth, angles[6].Azimuth); Assert.AreEqual(lastElevation, angles[6].Elevation); }
public void SolarAnglesAlongARoute() { var route = new PointToPointRouteData(); route.Waypoints.Add(new ServiceCartographicWithTime { Position = new ServiceCartographic(39.07096, -75.78509, 2000.0), Time = new DateTimeOffset(2014, 03, 25, 18, 30, 0, new TimeSpan(0, 0, 0)) }); route.Waypoints.Add(new ServiceCartographicWithTime { Position = new ServiceCartographic(39.06308, -75.7850, 2010.0), Time = new DateTimeOffset(2014, 03, 25, 18, 30, 20, new TimeSpan(0, 0, 0)) }); route.OutputSettings.Step = 5; var solarData = new SolarLightingData <PointToPointRouteData> { Path = route, OutputTimeOffset = -4.0f }; var angles = LightingServices.GetSolarAnglesAlongARoute(solarData).Result; Assert.That(angles.Count == 5); // Validated against STK Components var firstAzimuth = 211.51272744968563; var lastAzimuth = 211.63258762262419; var firstElevation = 48.583033190527004; var lastElevation = 48.555909311795077; var firstTime = new DateTimeOffset(2014, 3, 25, 18, 30, 0, new TimeSpan(0, 0, 0)); var lastTime = new DateTimeOffset(2014, 3, 25, 18, 30, 20, new TimeSpan(0, 0, 0)); Assert.AreEqual(firstTime, angles[0].Time); Assert.AreEqual(firstAzimuth, angles[0].Azimuth); Assert.AreEqual(firstElevation, angles[0].Elevation); Assert.AreEqual(lastTime, angles[4].Time); Assert.AreEqual(lastAzimuth, angles[4].Azimuth); Assert.AreEqual(lastElevation, angles[4].Elevation); }
public void SolarLighting_SiteLightingForThreeDays() { var site = new SiteData { Location = new ServiceCartographic(39.0, -75.77, 0) }; var solarData = new SolarLightingData <SiteData> { Path = site, AnalysisStart = new DateTimeOffset(2018, 4, 9, 0, 0, 0, new TimeSpan(0, 0, 0)), AnalysisStop = new DateTimeOffset(2018, 4, 11, 0, 0, 0, new TimeSpan(0, 0, 0)), OutputTimeOffset = -4.0f }; var lighting = LightingServices.GetLightingAtASite(solarData).Result; // setup expected dates, then test var firstSunrise = new DateTimeOffset(2018, 4, 9, 6, 35, 24, 756, new TimeSpan(-4, 0, 0)); var firstAstroPmTwilightStop = new DateTimeOffset(2018, 4, 9, 21, 08, 04, 142, new TimeSpan(-4, 0, 0)); Assert.That(lighting.Lighting.Count == 3); Assert.AreEqual(firstSunrise.ToUnixTimeMilliseconds(), lighting.Lighting[0].Sunrise.ToUnixTimeMilliseconds()); Assert.AreEqual(firstAstroPmTwilightStop.ToUnixTimeMilliseconds(), lighting.Lighting[0].AstronomicalTwilightPmStop.ToUnixTimeMilliseconds()); Assert.IsTrue(lighting.Lighting[0].IsRiseDefined); Assert.IsTrue(lighting.Lighting[0].IsSetDefined); var secondSunset = new DateTimeOffset(2018, 4, 10, 19, 35, 29, 938, new TimeSpan(-4, 0, 0)); Assert.AreEqual(secondSunset.ToUnixTimeMilliseconds(), lighting.Lighting[1].Sunset.ToUnixTimeMilliseconds()); var thirdNauticalPmTwilightStop = new DateTimeOffset(2018, 4, 11, 20, 36, 34, 092, new TimeSpan(-4, 0, 0)); Assert.AreEqual(thirdNauticalPmTwilightStop.ToUnixTimeMilliseconds(), lighting.Lighting[2].NauticalTwilightPmStop.ToUnixTimeMilliseconds()); }
public void TestSolarLighting() { var request = new SolarLightingData <SiteData>(); request.Path = new SiteData(); request.Path.Location.Latitude = 39.0; request.Path.Location.Longitude = -104.77; request.Path.Location.Altitude = 1910; request.AnalysisStart = new DateTime(2018, 5, 5); request.AnalysisStop = new DateTime(2018, 5, 5); request.OutputTimeOffset = -6.0f; var lightingResult = LightingServices.GetLightingAtASite(request).Result; Assert.That(lightingResult != null); Assert.That(lightingResult.Lighting[0].Sunrise.Hour == 5); Assert.That(lightingResult.Lighting[0].Sunrise.Minute == 56); Assert.That(lightingResult.Lighting[0].Sunrise.Second == 20); Assert.That(lightingResult.Lighting[0].Sunset.Hour == 19); Assert.That(lightingResult.Lighting[0].Sunset.Minute == 55); Assert.That(lightingResult.Lighting[0].Sunset.Second == 49); }