Exemple #1
0
        static void SpatialTrace_GeometryWithDEMGrid(ElevationService elevationService, IGeoTiffService geoTiffService, string wktBbox, DEMDataSet dataSet)
        {
            SpatialTrace.Enable();
            DEM.Net.Lib.BoundingBox bbox = null;
            if (wktBbox != null)
            {
                SqlGeometry geom = GeometryService.ParseWKTAsGeometry(wktBbox);
                SpatialTrace.TraceGeometry(geom, "Bbox");
                bbox = geom.ToGeography().STBuffer(60).GetBoundingBox();

                //SpatialTrace.Indent("Line Segments");
                //int i = 0;
                //foreach (var seg in geom.Segments())
                //{
                //	i++;
                //	Color color = (i % 2 == 0) ? Colors.Blue : Colors.Red;
                //	SpatialTrace.SetLineColor(color);
                //	SpatialTrace.TraceGeometry(seg, "Seg" + i, "Seg" + i);
                //}

                SpatialTrace.Unindent();
            }



            Dictionary <string, DemFileReport> tiles = geoTiffService.GenerateReport(dataSet, bbox);

            SpatialTrace.Indent("DEM tiles");
            SpatialTrace.SetLineColor(Colors.Black);
            foreach (var tile in tiles)
            {
                SpatialTrace.SetFillColor(tile.Value.IsExistingLocally ? Color.FromArgb(128, 0, 255, 0) : Color.FromArgb(128, 255, 0, 0));

                SqlGeometry tileBbox = tile.Value.Source.BBox.AsGeomety();
                SpatialTrace.TraceGeometry(tileBbox, $"{tile.ToString()}");
            }
            SpatialTrace.Unindent();

            // View spatial trace in bin\debug with spatial trace viewer
            SpatialTrace.ShowDialog();
            SpatialTrace.Disable();
        }
Exemple #2
0
        public void DownloadMissingFiles(DEMDataSet dataSet, BoundingBox bbox = null)
        {
            var report = _IGeoTiffService.GenerateReport(dataSet, bbox);

            // Generate metadata files if missing
            foreach (var file in report.Where(kvp => kvp.Value.IsMetadataGenerated == false && kvp.Value.IsExistingLocally == true).Select(kvp => kvp.Value))
            {
                _IGeoTiffService.GenerateFileMetadata(file.LocalName, false, false);
            }
            List <DemFileReport> v_filesToDownload = new List <DemFileReport>(report.Where(kvp => kvp.Value.IsExistingLocally == false).Select(kvp => kvp.Value));

            if (v_filesToDownload.Count == 0)
            {
                Trace.TraceInformation("No missing file(s).");
            }
            else
            {
                Trace.TraceInformation($"Downloading {v_filesToDownload.Count} missing file(s).");

                List <Task> tasks = new List <Task>();
                foreach (var file in v_filesToDownload)
                {
                    tasks.Add(DownloadDEMTile(file.URL, file.LocalName));
                }
                try
                {
                    Task.WaitAll(tasks.ToArray());

                    _IGeoTiffService.GenerateDirectoryMetadata(dataSet, false, false);
                    _IGeoTiffService.LoadManifestMetadata(dataSet, true);
                }
                catch (AggregateException ex)
                {
                    Trace.TraceError($"Error downloading missing files. Check internet connection or retry later. {ex.GetInnerMostException().Message}");
                }
            }
        }