/// <summary>
        /// Prompts user or automatically creates raster overviews if needed.
        /// </summary>
        private bool UpdateOverviews(IRasterSource raster)
        {
            if (!raster.NeedsOverviews)
            {
                return(true);
            }

            var config = _configService.Config;

            if (!config.ShowPyramidDialog && config.CreatePyramidsOnOpening)
            {
                if (raster.ImageFormat == ImageFormat.Vrt)
                {
                    Logger.Current.Info("Automatic creation of pyramids for .vrt dataset is skipped.");
                    return(true);
                }

                raster.BuildDefaultOverviews(config.PyramidSampling, config.PyramidCompression);
                return(true);
            }

            var presenter = _context.Container.GetInstance <CreatePyramidsPresenter>();

            if (!presenter.Run(raster))
            {
                return(false);
            }

            config.ShowPyramidDialog       = !presenter.DontShowAgain;
            config.CreatePyramidsOnOpening = presenter.Result == DialogResult.Yes;
            config.PyramidCompression      = presenter.View.Compression;
            config.PyramidSampling         = presenter.View.Sampling;
            return(true);
        }
Exemple #2
0
        private NodeData GetBandsInfo(IRasterSource raster)
        {
            var root = new NodeData("Bands");

            var bands = raster.Bands;

            for (int i = 1; i <= bands.Count; i++)
            {
                var band = bands[i];

                var bandNode = new NodeData("Band " + i);
                bandNode.AddSubItem("Data type", band.DataType.ToString());
                bandNode.AddSubItem("Unit type", band.UnitType);

                // TODO: restore; temporarily commented
                //bandNode.AddSubItem("Minimum", band.Minimum);
                //bandNode.AddSubItem("Maximum", band.Maximum);

                bandNode.AddSubItem("No data value", band.NoDataValue.ToString(CultureInfo.InvariantCulture));
                bandNode.AddSubItem("Color interpretation", band.ColorInterpretation.ToString());
                bandNode.AddSubItem("Overview count", band.Overviews.Count);

                var metadata = GetMetadata(band);
                if (metadata != null)
                {
                    bandNode.AddSubItem(metadata);
                }

                root.AddSubItem(bandNode);
            }

            return(root);
        }
        public static void AddRasterBands(this ComboBoxAdv combo, IRasterSource raster, bool withNone = false)
        {
            if (combo == null)
            {
                return;
            }

            combo.Items.Clear();

            if (withNone)
            {
                combo.Items.Add("<none>");
            }

            int bandCount = raster.Bands.Count;

            for (int i = 1; i <= bandCount; i++)
            {
                string bandName = raster.GetBandFullName(i);
                combo.Items.Add(bandName);
            }

            int index = raster.ActiveBandIndex;

            combo.SelectedIndex = index > 0 && index <= bandCount ? index - 1 : 0;
        }
Exemple #4
0
 public RasterInput(IRasterSource raster)
     : base(raster)
 {
     if (raster == null)
     {
         throw new ArgumentNullException("raster");
     }
     Datasource = raster;
 }
Exemple #5
0
        public void ConfigureWindsor()
        {
            IRasterSource     source       = windsorContainer.Resolve <IRasterSource> ();
            Srtm3IndexFetcher indexFetcher = windsorContainer.Resolve <Srtm3IndexFetcher> ();

            Srtm3Source srtm3Source = (Srtm3Source)source;

            // todo new
            //Assert.AreEqual(
            //    "http://dds.cr.usgs.gov/srtm/version2_1/",
            //    ((DefaultSrtmServerClient) srtm3Source.SrtmServerClient).SrtmServerUrl);

            string[]   args       = new string[0];
            ConsoleApp consoleApp = CreateConsoleApp(args);
        }
Exemple #6
0
        public void Initialize(IRasterSource raster)
        {
            if (raster == null)
            {
                return;
            }

            Nodes.Clear();

            var root = PopulateTree(raster);

            var node = AddSubItems(Nodes, root);

            node.ExpandAll();
        }
Exemple #7
0
        public void Initialize(IAppContext context, IRasterSource raster)
        {
            if (raster == null)
            {
                throw new ArgumentNullException("raster");
            }
            if (context == null)
            {
                throw new ArgumentNullException("raster");
            }
            _context = context;
            _raster  = raster;

            InitComboBoxes();
        }
Exemple #8
0
        private void AddBounds(NodeData root, IRasterSource raster)
        {
            var bounds = new NodeData("Bounds");

            bounds.AddSubItem("Cell size", string.Format("{0}×{1}", raster.Dx, raster.Dy));
            bounds.AddSubItem("Lower left corner", string.Format("{0};{1}", raster.XllCenter, raster.YllCenter));
            root.AddSubItem(bounds);

            var buffer = new NodeData("Buffer");

            buffer.AddSubItem("Width", raster.BufferWidth);
            buffer.AddSubItem("Height", raster.BufferHeight);
            buffer.AddSubItem("Cell size", string.Format("{0}×{1}", raster.BufferDx, raster.BufferDy));
            buffer.AddSubItem("Lower left corner", string.Format("{0};{1}", raster.BufferXllCenter, raster.BufferYllCenter));

            root.AddSubItem(buffer);
        }
        private void DisplayPixelInfo(IRasterSource raster, NodeData nodePixel, SelectionItem pixel)
        {
            int bufferX, bufferY;

            raster.ImageToBuffer(pixel.Column, pixel.Row, out bufferX, out bufferY);

            if (raster.RenderingType != RasterRendering.Rgb)
            {
                var band = raster.ActiveBand;
                if (band != null)
                {
                    var nodeBand = nodePixel.AddSubItem("Band", raster.ActiveBandIndex);

                    double value;
                    nodeBand.AddSubItem("Value",
                                        band.GetValue(pixel.Column, pixel.Row, out value)
                            ? value.ToString(CultureInfo.InvariantCulture)
                            : "Failed to retrieve");

                    ShowRasterCellInfo(nodeBand, raster);

                    nodeBand.AddSubItem("Interpretation", band.ColorInterpretation.EnumToString());

                    ShowLocalStatistics(nodePixel, band, pixel);
                }
            }
            else
            {
                var nodeInfo = nodePixel.AddSubItem("Info", " ");
                ShowRasterCellInfo(nodeInfo, raster);
            }

            AddColor(nodePixel, raster.GetPixel(bufferY, bufferX));

            if (raster.RenderingType == RasterRendering.Rgb)
            {
                if (raster.UseRgbBandMapping)
                {
                    NodeData nodeRgb = nodePixel.AddSubItem("RGB mapping", " ");

                    DisplayRgbMapping(nodeRgb, raster, pixel);
                }
            }

            DisplayPixelPosition(nodePixel, pixel, raster);
        }
        private void DisplayRgbMapping(NodeData nodeRgb, IRasterSource raster, SelectionItem pixel)
        {
            var indices = new List <int>();

            if (!raster.UseRgbBandMapping)
            {
                for (int i = 1; i <= Math.Max(4, raster.NumBands); i++)
                {
                    indices.Add(i);
                }
            }
            else
            {
                indices.Add(raster.RedBandIndex);
                indices.Add(raster.GreenBandIndex);
                indices.Add(raster.BlueBandIndex);
                indices.Add(raster.AlphaBandIndex);
            }

            for (int i = 0; i < indices.Count; i++)
            {
                if (indices[i] <= 0 || indices[i] > raster.NumBands)
                {
                    continue;
                }

                string channel  = ((RgbChannel)i).EnumToString();
                var    nodeBand = nodeRgb.AddSubItem("Band " + (i + 1), channel);

                var band = raster.Bands[indices[i]];
                if (band != null)
                {
                    double value;
                    nodeBand.AddSubItem("Value",
                                        band.GetValue(pixel.Column, pixel.Row, out value)
                             ? value.ToString(CultureInfo.InvariantCulture)
                             : "Failed to retrieve");

                    if (raster.UseRgbBandMapping)
                    {
                        nodeBand.AddSubItem("Original index", indices[i]);
                    }
                }
            }
        }
        private void DisplayPixelPosition(NodeData nodePixel, SelectionItem pixel, IRasterSource raster)
        {
            var nodeBuffer = nodePixel.AddSubItem("Position", " ");

            double projX, projY;

            raster.ImageToProjection(pixel.Column, pixel.Row, out projX, out projY);

            double degX, degY;

            if (_context.Map.ProjToDegrees(projX, projY, out degX, out degY))
            {
                nodeBuffer.AddSubItem("Latitude", GeoAngle.FromDouble(degY).ToString());
                nodeBuffer.AddSubItem("Longitude", GeoAngle.FromDouble(degX).ToString());
            }

            nodeBuffer.AddSubItem("Projected X", projX.ToString("0.0"));
            nodeBuffer.AddSubItem("Projected Y", projY.ToString("0.0"));
        }
Exemple #12
0
        private NodeData PopulateTree(IRasterSource raster)
        {
            var root = new NodeData(" ");

            var general = new NodeData("General");

            general.AddSubItem("Size", string.Format("{0}×{1}", raster.Width, raster.Height));
            general.AddSubItem("Palette", raster.PaletteInterpretation.ToString());
            general.AddSubItem("Bands", raster.NumBands);
            general.AddSubItem("Driver", raster.Driver.Name);

            root.AddSubItem(general);

            var bandsData = GetBandsInfo(raster);

            root.AddSubItem(bandsData);

            AddBounds(root, raster);

            return(root);
        }
        public void Initialize(IApplicationContainer container, IRasterSource raster)
        {
            if (raster == null)
            {
                return;
            }

            if (container == null)
            {
                throw new ArgumentNullException("container");
            }

            _container = container;
            _raster    = raster;

            cboBand.AddRasterBands(raster);

            var band = ActiveBand;

            if (band != null)
            {
                SetHistogram(band.GetDefaultHistogram());
            }
        }
        private void ShowRasterCellInfo(NodeData node, IRasterSource raster)
        {
            node.AddSubItem("Data type", raster.DataType.EnumToString());

            node.AddSubItem("Cell size", string.Format("{0:g5} × {1:g5}", raster.BufferDx, raster.BufferDy));
        }
Exemple #15
0
        private void MainForm_Load(object sender, System.EventArgs e)
        {
            // 初始化RenderControl控件
            IPropertySet ps = new PropertySet();

            ps.SetProperty("RenderSystem", gviRenderSystem.gviRenderOpenGL);
            this.axRenderControl1.Initialize(true, ps);

            rootId = this.axRenderControl1.ObjectManager.GetProjectTree().RootID;

            // 设置天空盒

            if (System.IO.Directory.Exists(strMediaPath))
            {
                string  tmpSkyboxPath = strMediaPath + @"\skybox";
                ISkyBox skybox        = this.axRenderControl1.ObjectManager.GetSkyBox(0);
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBack, tmpSkyboxPath + "\\1_BK.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageBottom, tmpSkyboxPath + "\\1_DN.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageFront, tmpSkyboxPath + "\\1_FR.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageLeft, tmpSkyboxPath + "\\1_LF.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageRight, tmpSkyboxPath + "\\1_RT.jpg");
                skybox.SetImagePath(gviSkyboxImageIndex.gviSkyboxImageTop, tmpSkyboxPath + "\\1_UP.jpg");
            }
            else
            {
                MessageBox.Show("请不要随意更改SDK目录名");
                return;
            }

            this.axRenderControl1.Camera.FlyTime = 0;

            // 注册地形
            string tmpTedPath = (strMediaPath + @"\terrain\world.ted");

            this.axRenderControl1.Terrain.RegisterTerrain(tmpTedPath, "");
            this.axRenderControl1.Terrain.FlyTo(gviTerrainActionCode.gviFlyToTerrain);
            // 添加节点到界面控件上
            myListNode item = new myListNode("world", TreeNodeType.NT_TERRAINLAYER, this.axRenderControl1.Terrain);

            item.Checked = true;
            listView1.Items.Add(item);

            // 创建影像图层
            string        tmpImageryPath = (strMediaPath + @"\imagery\jk1.tif");
            IImageryLayer imagelayer     = this.axRenderControl1.ObjectManager.CreateImageryLayer(tmpImageryPath, rootId);

            this.axRenderControl1.Camera.FlyToObject(imagelayer.Guid, gviActionCode.gviActionFlyTo);
            // 添加节点到界面控件上
            item         = new myListNode("jk1", TreeNodeType.NT_IMAGELAYER, imagelayer);
            item.Checked = true;
            listView1.Items.Add(item);

            IRasterSourceFactory rasFac = new RasterSourceFactory();
            IRasterSource        source = rasFac.OpenRasterSource(@"http://192.168.2.254:6163/igs/rest/ogc/WMTSServer/1.0.0/WMTSCapabilities.xml", gviRasterConnectionType.gviRasterConnectionWMTS);

            if (source != null)
            {
                string[] names = source.GetRasterNames();
                for (int n = 0; n < names.Length; n++)
                {
                    IRaster       raster      = source.OpenRaster(names[n]);
                    IImageryLayer imagelayer2 = this.axRenderControl1.ObjectManager.CreateImageryLayer(raster.ConnStr, rootId);
                    // 添加节点到界面控件上
                    item         = new myListNode(raster.Name, TreeNodeType.NT_IMAGELAYER, imagelayer2);
                    item.Checked = true;
                    listView1.Items.Add(item);
                }
            }


            {
                this.helpProvider1.SetShowHelp(this.axRenderControl1, true);
                this.helpProvider1.SetHelpString(this.axRenderControl1, "");
                this.helpProvider1.HelpNamespace = "ImageryLayer.html";
            }
        }
Exemple #16
0
 protected override void Initialize()
 {
     _raster = Model.ImageSource as IRasterSource;
 }
Exemple #17
0
        public void Initialize(IRasterSource raster)
        {
            _raster = raster;

            ShowOverviews();
        }
 public DefaultContoursGenerator(IRasterSource demSource)
 {
     this.demSource = demSource;
 }