public void TestIntervisibility(string dataSetName, double latStart, double lonStart , double latEnd, double lonEnd, double expectedObstacles) { DEMDataSet dataSet = DEMDataSet.RegisteredDatasets.FirstOrDefault(d => d.Name == dataSetName); Assert.NotNull(dataSet); IntervisibilityReport report = _elevationService.GetIntervisibilityReport(new GeoPoint(latStart, lonStart), new GeoPoint(latEnd, lonEnd), dataSet); Assert.NotNull(report); Assert.Equal(expectedObstacles, report.ObstacleCount, 0); Assert.Equal(expectedObstacles, report.Metrics.Obstacles.Count, 0); }
public void Run(CancellationToken cancellationToken) { try { // ventoux //double lat1 = 44.17346; //double lon1 = 5.27829; // ste victoire //double lat1 = 43.532456; //double lon1 = 5.612444; // bottom ste victoire (fuveau) //double lat1 = 43.49029208393125; //double lon1 = 5.587234497070313; //double lat2 = 43.53013134607789; //double lon2 = 5.581398010253906; // geneva //double lat1 = 46.08129825372404; //double lon1 = 3.382026672363281; // mont blanc //double lat2 = 45.833; //double lon2 = 6.864; // bob //double lat1 = 37.212627; //double lon1 = 22.321612; //double lat2 = 37.208179; //double lon2 = 22.324373; double lat2 = 44.116655590545705; double lat1 = 44.19524951146881; double lon2 = 5.802505910396577; double lon1 = 5.806566774845124; Stopwatch sw = new Stopwatch(); if (cancellationToken.IsCancellationRequested) { return; } _logger.LogInformation("Line elevation"); sw.Restart(); // Line starting at mont ventoux peak to Mont Blanc DEMDataSet dataSet = DEMDataSet.ASTER_GDEMV3; // High level way var metrics = _elevationService.GetIntervisibilityReport(new GeoPoint(lat1, lon1), new GeoPoint(lat2, lon2), dataSet , downloadMissingFiles: true, sourceVerticalOffset: 0); PlotVisibilityReport(metrics, 2048, 600, "VisReport.png"); // Low level (tests from 0 to 2000 m) var elevationLine = GeometryService.ParseGeoPointAsGeometryLine(new GeoPoint(lat1, lon1), new GeoPoint(lat2, lon2)); var geoPoints = _elevationService.GetLineGeometryElevation(elevationLine, dataSet); for (int i = 300; i < 10000; i += 500) { var report = _elevationService.GetIntervisibilityReport(geoPoints, i); PlotVisibilityReport(report, 2048, 600, $"VisReport_{i}.png"); } _logger.LogInformation($"{dataSet.Name} metrics: {metrics.ToString()}"); //var geoJson = ConvertLineElevationResultToGeoJson(simplified); _logger.LogInformation($"Done in {sw.Elapsed.TotalMilliseconds:N1}ms"); } catch (Exception ex) { _logger.LogError(ex, ex.Message); } }