示例#1
0
        public static IRasterRenderer ClassifyRenderer(IRasterLayer raslyr,IRgbColor start_clr,IRgbColor end_clr,int count)
        {
            IRasterClassifyColorRampRenderer pRClassRend = new RasterClassifyColorRampRendererClass();
            IRasterRenderer rasterRenderer = pRClassRend as IRasterRenderer;

            IRaster pRaster = raslyr.Raster;
            IRasterBandCollection pRBandCol = pRaster as IRasterBandCollection;
            IRasterBand pRBand = pRBandCol.Item(0);
            if (pRBand.Histogram == null)
            {
                pRBand.ComputeStatsAndHist();
            }
            rasterRenderer.Raster = pRaster;
            pRClassRend.ClassCount = count;
            rasterRenderer.Update();

            IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRampClass();
            colorRamp.Size = count;
            colorRamp.FromColor = start_clr;
            colorRamp.ToColor = end_clr;
            bool createColorRamp;
            colorRamp.CreateRamp(out createColorRamp);

            IFillSymbol fillSymbol = new SimpleFillSymbolClass();
            for (int i = 0; i < pRClassRend.ClassCount; i++)
            {
                fillSymbol.Color = colorRamp.get_Color(i);
                pRClassRend.set_Symbol(i, fillSymbol as ISymbol);
                pRClassRend.set_Label(i, pRClassRend.get_Break(i).ToString("0.00"));
            }
            return rasterRenderer;
        }
示例#2
0
 public frmRaterSym1(IRasterLayer rasLayer, AxMapControl mapcontrol, AxTOCControl toccontrol)
 {
     InitializeComponent();
     this.rasterlayer = rasLayer;
     axmapcontrol = mapcontrol;
     axtoccontrol = toccontrol;
 }
示例#3
0
        //Lenber 2009-5-21
        public List<string> getALLCounts(IRasterLayer raserLayer,ref int counts)
        {
            List<string> lstValues = new List<string>();
            IRaster2 raster = raserLayer.Raster as IRaster2;
            ITable rasterTable = raster.AttributeTable;
            IFields pFields = rasterTable.Fields;

            int pFieldIndex = pFields.FindField("Count");

            if (pFieldIndex < 0)
            {
                return null;
            }

            ICursor pc = rasterTable.Search(null, false);
            IRow prow = pc.NextRow();
            while(prow!=null)
            {
               string val= prow.get_Value(pFieldIndex).ToString();
               lstValues.Add(val);
               prow = pc.NextRow();
            }
            counts = rasterTable.RowCount(null);
            return lstValues;
        }
示例#4
0
        /// <summary>
        /// Gets the render color of the specific value in the input raster layer.
        /// </summary>
        /// <param name="value"></param>
        /// <param name="rasterLayer"></param>                         
        /// <returns></returns>             
        public static IColor GetRenderColor(IRasterLayer rasterLayer, double value)
        {
            RenderType renderType = GetRenderType(rasterLayer);

            IColor renderColor = null;
            switch (renderType)
            {
                case RenderType.Classified:
                    renderColor = GetRenderColor_Classified(rasterLayer, value);
                    break;
                case RenderType.DiscreteColor:
                    renderColor = GetRenderColor_DiscreteColor(rasterLayer, value);
                    break;
                case RenderType.Stretched:
                    renderColor = GetRenderColor_Stretched(rasterLayer, value);
                    break;
                case RenderType.UniqueValues:
                    renderColor = GetRenderColor_UniqueValues(rasterLayer, value);
                    break;
                default:
                    break;
            }

            return renderColor;
        }
 private void btn_OkStretch_Click(object sender, EventArgs e)
 {
     try
     {
         string RasterName = cbb_RasterLayersStretch.SelectedItem.ToString();
         rasterlayer = GetRasterLayer(RasterName);
         IRasterStretchColorRampRenderer rasStreRen = new RasterStretchColorRampRendererClass();
         IRasterRenderer rasRen = rasStreRen as IRasterRenderer;
         rasRen.Raster = rasterlayer.Raster;
         rasRen.Update();
         rasStreRen.BandIndex = cbb_BandStretch.SelectedIndex;
         pListRamp = style.pListRamp;
         rasStreRen.ColorRamp = (IColorRamp)pListRamp[cbbs_ColorStretch.SelectedIndex];
         rasRen.Update();
         rasterlayer.Renderer = rasStreRen as IRasterRenderer;
         IRasterStretch2 stretch = rasStreRen as IRasterStretch2;
         stretch.BackgroundValue = 0;
         stretch.Background = true;
         stretch.BackgroundColor = RasterRender.GET(255, 255, 255) as IColor;
         axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
         axtoccontrol.Update();
         axmapcontrol.Extent = rasterlayer.AreaOfInterest;
         this.Close();
     }
     catch (Exception ec)
     {
         MessageBox.Show(ec.Message);
     }
 }
示例#6
0
 public frmSymbology(IRasterLayer rasterLayer, IMapControl2 mainMap, ITOCControl2 mainToc)
 {
     InitializeComponent();
     m_RasterLayer = rasterLayer;
     m_MainMap = mainMap;
     m_MainTOC = mainToc;
 }
示例#7
0
        /// <summary>
        /// Gets the render type of the input raster layer.
        /// </summary>
        /// <param name="rasterLayer"></param>
        /// <returns></returns>
        public static RenderType GetRenderType(IRasterLayer rasterLayer)
        {
            IRasterRenderer rasterRenderer = rasterLayer.Renderer;

            if (rasterRenderer is RasterClassifyColorRampRenderer)
            {
                return RenderType.Classified;
            }
            else if (rasterRenderer is RasterDiscreteColorRenderer)
            {
                return RenderType.DiscreteColor;
            }
            else if (rasterRenderer is RasterStretchColorRampRenderer)
            {
                return RenderType.Stretched;
            }
            else if (rasterRenderer is RasterUniqueValueRenderer)
            {
                return RenderType.UniqueValues;
            }
            else
            {
                return RenderType.Unknow;
            }
        }
示例#8
0
 /// <summary>
 /// Shows the properties of the current raster legend item.
 /// </summary>
 /// <param name="e"></param>
 public void ShowProperties(IRasterLayer e)
 {
     using (var dlg = new LayerDialog(e, new RasterCategoryControl()))
     {
         ShowDialog(dlg);
     }
 }
示例#9
0
 public frmSelectBand(IMapControlDefault mapCon, IRasterLayer rasLayer, IWorkspace workSpace)
 {
     InitializeComponent();
     this.m_mapCon = mapCon;
     m_rasLayer = rasLayer;
     m_workSpace = workSpace;
 }
        /// <summary>
        /// Creates a new instance of LayerDialog form to display the symbology and
        /// other properties of the specified feature layer
        /// </summary>
        /// <param name="selectedLayer">the specified feature layer that is
        /// modified using this form</param>
        public RasterLayerDialog(IRasterLayer selectedLayer)
        {
            InitializeComponent();

            _layer = selectedLayer;
            propertyGrid1.SelectedObject = _layer;
            Configure();
        }
示例#11
0
 /// <summary>
 /// Sets up the Table to work with the specified layer.
 /// </summary>
 /// <param name="layer">The layer.</param>
 public void Initialize(IRasterLayer layer)
 {
     _originalLayer  = layer;
     _newLayer       = layer.Copy();
     _symbolizer     = layer.Symbolizer;
     _newScheme      = _symbolizer.Scheme;
     _originalScheme = (IColorScheme)_symbolizer.Scheme.Clone();
     _raster         = layer.DataSet;
     GetSettings();
 }
示例#12
0
        /// <summary>
        /// Show the extent of input layer in the control.
        /// </summary>
        /// <param name="rasterLayer"></param>
        private void ShowExtent(IRasterLayer rasterLayer)
        {
            IRasterProps rasterProps = (IRasterProps)rasterLayer.Raster;

            leftCoorTextBox.Text = rasterProps.Extent.XMin.ToString();
            buttomCoorTextBox.Text = rasterProps.Extent.YMin.ToString();

            IPnt pixelSize = rasterProps.MeanCellSize();
            pixelSizeTextBox.Text = pixelSize.Y.ToString();
        }
示例#13
0
        public static bool UniqueValueRenderer(IColorRamp colorRamp, IRasterLayer rasterLayer, string renderfiled = "Value")
        {
            try
            {
                IRasterUniqueValueRenderer uniqueValueRenderer = new RasterUniqueValueRendererClass();
                IRasterRenderer            pRasterRenderer     = uniqueValueRenderer as IRasterRenderer;
                pRasterRenderer.Raster = rasterLayer.Raster;
                pRasterRenderer.Update();
                IUniqueValues           uniqueValues     = new UniqueValuesClass();
                IRasterCalcUniqueValues calcUniqueValues = new RasterCalcUniqueValuesClass();
                calcUniqueValues.AddFromRaster(rasterLayer.Raster, 0, uniqueValues);//iBand=0
                IRasterRendererUniqueValues renderUniqueValues = uniqueValueRenderer as IRasterRendererUniqueValues;
                renderUniqueValues.UniqueValues = uniqueValues;
                uniqueValueRenderer.Field       = renderfiled;
                colorRamp.Size = uniqueValues.Count;

                uniqueValueRenderer.HeadingCount = 1;
                uniqueValueRenderer.set_Heading(0, "All Data Value");
                uniqueValueRenderer.set_ClassCount(0, uniqueValues.Count);
                bool pOk;
                colorRamp.CreateRamp(out pOk);
                IRasterRendererColorRamp pRasterRendererColorRamp = uniqueValueRenderer as IRasterRendererColorRamp;
                pRasterRendererColorRamp.ColorRamp = colorRamp;
                for (int i = 0; i < uniqueValues.Count; i++)
                {
                    uniqueValueRenderer.AddValue(0, i, uniqueValues.get_UniqueValue(i));
                    uniqueValueRenderer.set_Label(0, i, uniqueValues.get_UniqueValue(i).ToString());
                    IFillSymbol fs = new SimpleFillSymbol();
                    //fs.Color = colorRamp.get_Color(i);
                    IColor color = new RgbColorClass();
                    if ((Convert.ToByte(uniqueValues.get_UniqueValue(i)) == 255) || (Convert.ToByte(uniqueValues.get_UniqueValue(i)) == 0))
                    {
                        color.NullColor    = true;
                        color.Transparency = 0;
                        fs.Color           = color;
                    }
                    else
                    {
                        IRgbColor rgbColor = color as IRgbColor;
                        rgbColor.Red   = 0;
                        rgbColor.Green = 255;
                        rgbColor.Blue  = 0;
                        fs.Color       = rgbColor as IColor;
                    }
                    uniqueValueRenderer.set_Symbol(0, i, fs as ISymbol);
                }
                pRasterRenderer.Update();
                rasterLayer.Renderer = pRasterRenderer;
            }
            catch (Exception ex)
            {
                return(false);
            }
            return(true);
        }
 private void buttonCalConvertCells_Click(object sender, EventArgs e)
 {
     if (SimulationEndImageName != "")
     {
         IRasterLayer rasterLayer      = ArcGISOperator.GetRasterLayerByName(simulationStartImageName);
         int          startUrbanConuts = ArcGISOperator.GetUrbanCount(rasterLayer, landUseClassificationInfo);
         rasterLayer = ArcGISOperator.GetRasterLayerByName(simulationEndImageName);
         int endUrbanCounts = ArcGISOperator.GetUrbanCount(rasterLayer, landUseClassificationInfo);
         numericUpDownConvertCount.Value = Convert.ToDecimal(endUrbanCounts - startUrbanConuts);
     }
 }
示例#15
0
        private void cmbInputFile_SelectedIndexChanged(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            IRasterLayer pRasterLayer = pMap.get_Layer(cmbInputFile.SelectedIndex) as IRasterLayer;

            for (int i = 0; i < pRasterLayer.BandCount; i++)
            {
                listBox1.Items.Add("Band  " + Convert.ToString(i + 1));
            }
            lbSelectedBand.Text = "0//" + listBox1.Items.Count;
        }
        internal void AddItem(string itemName, IRasterLayer layer)
        {
            //   if (s_comboBox.items.Count == 0)
            //  {
            s_comboBox.Add(itemName, layer);
            //s_comboBox.Select(m_selAllCookie);
            //   }

            // Add each item to combo box.
            //  int cookie = s_comboBox.Add(itemName, layer);
        }
        public PreviewFeatureDataset(IRasterLayer rasterLayer)
        {
            if (rasterLayer == null || rasterLayer.RasterClass != null || rasterLayer.RasterClass.Polygon == null)
            {
                return;
            }
            _envelope = rasterLayer.RasterClass.Polygon.Envelope;
            _sRef     = rasterLayer.RasterClass.SpatialReference;

            _layer = rasterLayer;
        }
示例#18
0
 public RenderRasterLayerThreadPrint(Map map, IRasterLayer layer, IRasterLayer rootLayer, ICancelTracker cancelTracker)
 {
     _map           = map;
     _layer         = layer;
     _cancelTracker = cancelTracker;
     if (rootLayer != null)
     {
         _interpolMethod = rootLayer.InterpolationMethod;
         _transparency   = rootLayer.Transparency;
     }
 }
示例#19
0
        private void populateComboBox()
        {
            if (mp != null)
            {
                IEnumLayer rstLyrs = vUtil.getActiveViewLayers(viewUtility.esriIRasterLayer);
                ILayer     lyr     = rstLyrs.Next();
                while (lyr != null)
                {
                    string       lyrNm  = lyr.Name;
                    IRasterLayer rstLyr = (IRasterLayer)lyr;
                    IRaster      rst    = rsUtil.createRaster(((IRaster2)rstLyr.Raster).RasterDataset);
                    if (!rstDic.ContainsKey(lyrNm))
                    {
                        rstDic.Add(lyrNm, rst);
                        cmbInRaster1.Items.Add(lyrNm);
                        cmbInRaster2.Items.Add(lyrNm);
                    }
                    lyr = rstLyrs.Next();
                }
            }
            foreach (string s in new string[] { "+", "-", "*", "/", "POW", "MOD" })
            {
                esriRasterArithmeticOperation opVl = esriRasterArithmeticOperation.esriRasterMode;
                switch (s)
                {
                case "+":
                    opVl = esriRasterArithmeticOperation.esriRasterPlus;
                    break;

                case "-":
                    opVl = esriRasterArithmeticOperation.esriRasterMinus;
                    break;

                case "*":
                    opVl = esriRasterArithmeticOperation.esriRasterMultiply;
                    break;

                case "/":
                    opVl = esriRasterArithmeticOperation.esriRasterDivide;
                    break;

                case "POW":
                    opVl = esriRasterArithmeticOperation.esriRasterPower;
                    break;

                default:
                    opVl = esriRasterArithmeticOperation.esriRasterMode;
                    break;
                }
                cmbProcess.Items.Add(s);
                oprDic.Add(s, opVl);
            }
        }
示例#20
0
 public IRasterBand GetBand(IRasterLayer rasterlayer)
 {
     string fullpath = rasterlayer.FilePath;
     string filePath = System.IO.Path.GetDirectoryName(fullpath);
     string fileName = System.IO.Path.GetFileName(fullpath);
     IWorkspaceFactory wsf = new RasterWorkspaceFactoryClass();
     IWorkspace ws = wsf.OpenFromFile(filePath, 0);
     IRasterWorkspace rasterws = ws as IRasterWorkspace;
     IRasterDataset rastdataset = rasterws.OpenRasterDataset(fileName);
     IRasterBandCollection bandcoll = rastdataset as IRasterBandCollection;
     return bandcoll.Item(0);
 }
示例#21
0
        //获取最大最小栅格值
        private void SetMaxMinValue(int flag)
        {
            if (flag == 1)
            {
                textBoxMax.Text = "高:255";
                textBoxMin.Text = "低:0";
                return;
            }
            uint valueMax = 50;
            uint valueMin = 50;

            IRasterLayer pRasterLayer = m_layer as IRasterLayer;
            IRaster      pRaster      = pRasterLayer.Raster;
            IRasterProps pRasterProps = pRaster as IRasterProps;
            int          Height       = pRasterProps.Height;
            int          Width        = pRasterProps.Width;
            double       dX           = pRasterProps.MeanCellSize().X;
            double       dY           = pRasterProps.MeanCellSize().Y; //栅格的高度
            IEnvelope    extent       = pRasterProps.Extent;           //当前栅格数据集的范围
            rstPixelType pixelType    = pRasterProps.PixelType;        //当前栅格像素类型
            IPnt         pntSize      = new PntClass();

            pntSize.SetCoords(dX, dY);


            IPixelBlock pixelBlock = pRaster.CreatePixelBlock(pntSize);
            IPnt        pnt        = new PntClass();

            for (int i = 0; i < Height; i += 10)
            {
                for (int j = 0; j < Width; j += 10)
                {
                    pnt.SetCoords(i, j);
                    pRaster.Read(pnt, pixelBlock);
                    if (pixelBlock != null)
                    {
                        object obj  = pixelBlock.GetVal(0, 0, 0);
                        uint   temp = Convert.ToUInt32(obj);

                        if (temp > valueMax)
                        {
                            valueMax = temp;
                        }
                        else if (temp < valueMin)
                        {
                            valueMin = temp;
                        }
                    }
                }
            }
            textBoxMax.Text = "高:" + valueMax.ToString();
            textBoxMin.Text = "低:" + valueMin.ToString();
        }
示例#22
0
        /// <summary>
        /// 获取拉伸标注
        /// </summary>
        /// <param name="rasterLayer">图层</param>
        /// <returns></returns>
        public static string[] GetStretchLabels(IRasterLayer rasterLayer)
        {
            IRasterStretchColorRampRenderer rasterStretchColorRampRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer rasterRenderer = rasterStretchColorRampRenderer as IRasterRenderer;

            rasterRenderer.Raster = rasterLayer.Raster;
            rasterRenderer.Update();
            string[] labels = new string[2];
            labels[0] = rasterStretchColorRampRenderer.LabelHigh;
            labels[1] = rasterStretchColorRampRenderer.LabelLow;
            return(labels);
        }
示例#23
0
        private void button11_Click(object sender, EventArgs e)
        {
            _rasterLayer = null;
            this.Controls.Remove(canvasHost1);
            _canvas = null;
            CanvasHost host = this.canvasHost1;

            this.canvasHost1 = null;
            (host as IDisposable).Dispose();
            (host as UserControl).Dispose();
            GC.Collect();
        }
示例#24
0
文件: Legend.cs 项目: qingqibing/aa
        private void TabColorDialogChangesApplied(object sender, EventArgs e)
        {
            _editCategory.LowColor  = _tabColorDialog.StartColor;
            _editCategory.HighColor = _tabColorDialog.EndColor;
            ILegendItem  test = _editCategory.GetParentItem();
            IRasterLayer rl   = test as IRasterLayer;

            if (rl != null)
            {
                rl.WriteBitmap();
            }
        }
        /// <summary>
        /// This should launch a frmRasterSymbolizer
        /// </summary>
        /// <param name="context">ITypeDescriptorContext context</param>
        /// <param name="provider">IServiceProvider provider</param>
        /// <param name="value">object value</param>
        /// <returns>A new RasterSymbolizer</returns>
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            IRasterSymbolizer rs = value as IRasterSymbolizer ?? new RasterSymbolizer();

            IWindowsFormsEditorService dialogProvider = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

            IRasterLayer parent = rs.ParentLayer;
            LayerDialog  frm    = new LayerDialog(parent, new RasterCategoryControl());

            dialogProvider.ShowDialog(frm);
            return(parent.Symbolizer);
        }
示例#26
0
        private IColorRamp GetCurrentColorRamp()
        {
            IRasterLayer pRasterLayr = m_layer as IRasterLayer;
            IRasterStretchColorRampRenderer pStretchRenderer = new RasterStretchColorRampRendererClass();
            IRasterRenderer pRasterRenderer = (IRasterRenderer)pStretchRenderer;
            IRaster         pRaster         = pRasterLayr.Raster;

            pRasterRenderer.Raster = pRaster;
            pRasterRenderer.Update();
            pStretchRenderer.BandIndex = comboBoxBand.SelectedIndex;
            return(pStretchRenderer.ColorRamp);
        }
示例#27
0
        private void populateComboBox()
        {
            if (mp != null)
            {
                IEnumLayer rstLyrs = vUtil.getActiveViewLayers(viewUtility.esriIRasterLayer);
                ILayer     lyr     = rstLyrs.Next();
                while (lyr != null)
                {
                    string       lyrNm  = lyr.Name;
                    IRasterLayer rstLyr = (IRasterLayer)lyr;
                    IRaster      rst    = rsUtil.createRaster(((IRaster2)rstLyr.Raster).RasterDataset);

                    if (!rstDic.ContainsKey(lyrNm))
                    {
                        rstDic.Add(lyrNm, rst);
                        cmbStrata.Items.Add(lyrNm);
                    }
                    else
                    {
                        rstDic[lyrNm] = rst;
                    }

                    lyr = rstLyrs.Next();
                }
                rstLyrs = vUtil.getActiveViewLayers(viewUtility.esriIFeatureLayer);
                lyr     = rstLyrs.Next();
                while (lyr != null)
                {
                    string        lyrNm  = lyr.Name;
                    IFeatureLayer rstLyr = (IFeatureLayer)lyr;
                    IFeatureClass rst    = rstLyr.FeatureClass;

                    if (!ftrDic.ContainsKey(lyrNm))
                    {
                        ftrDic.Add(lyrNm, rst);
                        if (rst.ShapeType == esriGeometryType.esriGeometryPolygon)
                        {
                            cmbStrata.Items.Add(lyrNm);
                            cmbStands.Items.Add(lyrNm);
                        }
                        if (rst.ShapeType == esriGeometryType.esriGeometryPoint)
                        {
                            cmbPlots.Items.Add(lyrNm);
                        }
                    }
                    else
                    {
                        ftrDic[lyrNm] = rst;
                    }
                    lyr = rstLyrs.Next();
                }
            }
        }
示例#28
0
        /// <summary>
        /// 拉伸渲染raster图层
        /// </summary>
        /// <params name="pRLayer">raster图层</params>
        /// <remarks></remarks>
        public void UsingRasterStretchColorRampRender(IRasterLayer pRLayer)
        {
            //获得图层
            IRaster pRaster = default(IRaster);
            pRaster = pRLayer.Raster;

            //创建渲染并转换到栅格渲染
            IRasterStretchColorRampRenderer pStretchRen = default(IRasterStretchColorRampRenderer);
            pStretchRen = new RasterStretchColorRampRenderer();
            IRasterRenderer pRasRen = default(IRasterRenderer);
            pRasRen = (IRasterRenderer)pStretchRen;

            //栅格渲染赋值和更新
            pRasRen.Raster = pRaster;
            pRasRen.Update();

            //定义起止颜色
            IRgbColor pFromColor = new RgbColorClass();
            pFromColor.Red = 0;
            pFromColor.Green = 255;
            pFromColor.Blue = 0;

            IRgbColor pToColor = new RgbColorClass();
            pToColor.Red = 255;
            pToColor.Green = 0;
            pToColor.Blue = 0;

            //创建颜色条
            IAlgorithmicColorRamp pRamp = new AlgorithmicColorRamp();
            pRamp.Size = 255;
            pRamp.FromColor = pFromColor;
            pRamp.ToColor = pToColor;
            bool bOK;
            pRamp.CreateRamp(out bOK);

            //插入颜色条和选择渲染波段
            pStretchRen.BandIndex = 0;
            pStretchRen.ColorRamp = pRamp;

            //用新的设置更新渲染并赋值给图层
            pRasRen.Update();
            pRLayer.Renderer = (IRasterRenderer)pStretchRen;

            //释放内存
            pRLayer = null;
            pRaster = null;
            pStretchRen = null;
            pRasRen = null;
            pRamp = null;
            pToColor = null;
            pFromColor = null;
        }
示例#29
0
        public void funColorForRaster_Classify(IRasterLayer pRasterLayer)
        {
            IRasterClassifyColorRampRenderer pRClassRend = new
                                                           RasterClassifyColorRampRenderer() as IRasterClassifyColorRampRenderer;
            IRasterRenderer       pRRend    = pRClassRend as IRasterRenderer;
            IRaster               pRaster   = pRasterLayer.Raster;//栅格图
            IRasterBandCollection pRBandCol = pRaster as IRasterBandCollection;
            IRasterBand           pRBand    = pRBandCol.Item(0);

            if (pRBand.Histogram == null)
            {
                pRBand.ComputeStatsAndHist();
            }
            pRRend.Raster          = pRaster;
            pRClassRend.ClassCount = 10;
            pRRend.Update();
            IRgbColor pFromColor = new RgbColor() as IRgbColor;

            pFromColor.Red   = 255;
            pFromColor.Green = 0;
            pFromColor.Blue  = 0;
            IRgbColor pToColor = new RgbColor() as IRgbColor;

            pToColor.Red   = 0;
            pToColor.Green = 0;
            pToColor.Blue  = 255;
            IAlgorithmicColorRamp colorRamp = new AlgorithmicColorRamp() as
                                              IAlgorithmicColorRamp;

            colorRamp.Size      = 10;
            colorRamp.FromColor = pFromColor;
            colorRamp.ToColor   = pToColor;
            bool createColorRamp;

            colorRamp.CreateRamp(out createColorRamp);
            IFillSymbol fillSymbol = new SimpleFillSymbol() as IFillSymbol;

            for (int i = 0; i < pRClassRend.ClassCount; i++)
            {
                fillSymbol.Color = colorRamp.get_Color(i);
                pRClassRend.set_Symbol(i, fillSymbol as ISymbol);
                pRClassRend.set_Label(i,
                                      pRClassRend.get_Break(i).ToString("0.00"));
            }
            pRasterLayer.Renderer = pRRend;
            IActiveView activeview = this.axMapControl1.ActiveView;

            activeview.ContentsChanged();
            //刷新窗口
            activeview.PartialRefresh(esriViewDrawPhase.esriViewGeography, null,
                                      null);
        }
示例#30
0
        public void SetRasterNoDataColor()
        {
            try
            {
                if (m_pLyr == null)
                {
                    return;
                }
                ILayer pLayer = m_pLyr;

                if (!(pLayer is IRasterLayer) && !(pLayer is IRasterCatalogLayer))
                {
                    return;
                }

                //获得当前图层的符号
                IRasterRenderer pRasterRender = null;
                if (pLayer is IRasterLayer)
                {
                    IRasterLayer pRasterLayer = pLayer as IRasterLayer;
                    pRasterRender = pRasterLayer.Renderer;
                }
                else if (pLayer is IRasterCatalogLayer)
                {
                    IRasterCatalogLayer pRasterCatalogLayer = pLayer as IRasterCatalogLayer;
                    pRasterRender = pRasterCatalogLayer.Renderer;
                }
                else
                {
                    return;
                }

                if (pRasterRender == null)
                {
                    return;
                }
                IRasterDisplayProps pRasterDisplayProps = pRasterRender as IRasterDisplayProps;
                if (pRasterDisplayProps == null)
                {
                    return;
                }

                //获得当前的颜色值 并设置
                IColor pColor = ConvertColorToIColor(this.colorNoData.SelectedColor);
                pColor.Transparency = (byte)this.sliderTransparency.Value;

                pRasterDisplayProps.NoDataColor = pColor;
            }
            catch
            {
            }
        }
示例#31
0
        /// <summary>
        /// 读取数据并记录非空数据的行列号。
        /// </summary>
        public static float[,] ReadRasterAndGetNotNullRowColumn(IRasterLayer rasterLayer, out StructRasterMetaData structRasterMetaData,
                                                                out List <int> notNullRows, out List <int> notNullColumns)
        {
            int rowCount, columnCount;

            notNullRows    = new List <int>();
            notNullColumns = new List <int>();

            structRasterMetaData.ColumnCount = rasterLayer.ColumnCount;
            columnCount = structRasterMetaData.ColumnCount;
            structRasterMetaData.RowCount = rasterLayer.RowCount;
            rowCount = structRasterMetaData.RowCount;

            IEnvelope visiableExtent = rasterLayer.VisibleExtent;

            structRasterMetaData.XMin        = visiableExtent.XMin;
            structRasterMetaData.XMax        = visiableExtent.XMax;
            structRasterMetaData.YMin        = visiableExtent.YMin;
            structRasterMetaData.YMax        = visiableExtent.YMax;
            structRasterMetaData.NoDataValue = -9999f;

            IRaster2 raster  = rasterLayer.Raster as IRaster2;
            IPnt     fromPnt = new PntClass();

            fromPnt.SetCoords(0, 0);
            IPnt blockSize = new PntClass();

            blockSize.SetCoords(columnCount, rowCount);
            IPixelBlock pixelBlock = ((IRaster)raster).CreatePixelBlock(blockSize);

            rasterLayer.Raster.Read(fromPnt, pixelBlock);
            float[,] data = new float[rowCount, columnCount];

            for (int i = 0; i < rowCount; i++)
            {
                for (int j = 0; j < columnCount; j++)
                {
                    object value = pixelBlock.GetVal(0, j, i);
                    if (value != null)
                    {
                        data[i, j] = Convert.ToSingle(value);
                        notNullRows.Add(i);
                        notNullColumns.Add(j);
                    }
                    else
                    {
                        data[i, j] = structRasterMetaData.NoDataValue;
                    }
                }
            }
            return(data);
        }
示例#32
0
        private bool GetUniqueValues(string inFile)
        {
            IRasterLayer            pRasterLayer      = null;
            IUniqueValues           pUniqueValues     = null;
            IRasterCalcUniqueValues pCalcUniqueValues = null;

            try
            {
                pRasterLayer = new RasterLayerClass();
                pRasterLayer.CreateFromFilePath(inFile);
                if (!(1 == pRasterLayer.BandCount))
                {
                    XtraMessageBox.Show("文件类型不正确,请选择分类结果文件!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    return(false);
                }
                pUniqueValues     = new UniqueValuesClass();
                pCalcUniqueValues = new RasterCalcUniqueValuesClass();
                pCalcUniqueValues.AddFromRaster(pRasterLayer.Raster, 0, pUniqueValues);
                if (_dt.Rows.Count > 0)
                {
                    _dt.Rows.Clear();
                }
                for (int i = 0; i < pUniqueValues.Count; i++)
                {
                    DataRow row = _dt.NewRow();
                    row[0] = pUniqueValues.get_UniqueValue(i);
                    _dt.Rows.Add(row);
                }
                return(true);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("读取唯一值失败!\r\n" + ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                Log.WriteLog(typeof(frmRecode), ex);
                return(false);
            }
            finally
            {
                if (pCalcUniqueValues != null)
                {
                    Marshal.ReleaseComObject(pCalcUniqueValues);
                }
                if (pUniqueValues != null)
                {
                    Marshal.ReleaseComObject(pUniqueValues);
                }
                if (pRasterLayer != null)
                {
                    Marshal.ReleaseComObject(pRasterLayer);
                }
            }
        }
示例#33
0
        private void tocControl_OnDoubleClick(int button, int shift, int x, int y)
        {
            esriTOCControlItem esriTOCControlItem = esriTOCControlItem.esriTOCControlItemNone;
            object             obj      = null;
            object             obj2     = null;
            IBasicMap          basicMap = null;
            ILayer             layer    = null;

            this._tocControl.HitTest(x, y, ref esriTOCControlItem, ref basicMap, ref layer, ref obj, ref obj2);
            if (button == 1)
            {
                if (esriTOCControlItem == esriTOCControlItem.esriTOCControlItemLegendClass)
                {
                    if (layer is IRasterLayer)
                    {
                        IRasterLayer rasterLayer = layer as IRasterLayer;
                        if (rasterLayer.Renderer is IRasterRGBRenderer)
                        {
                            this._mapControl.CustomProperty = layer;
                            this.AddPopMenuRGBItem(obj2, rasterLayer);
                        }
                        else if (rasterLayer.Renderer is IRasterUniqueValueRenderer)
                        {
                            IRasterUniqueValueRenderer rasterUniqueValueRenderer = rasterLayer.Renderer as IRasterUniqueValueRenderer;
                            ISymbol symbol = rasterUniqueValueRenderer.get_Symbol(0, (int)obj2);
                            this.RenderRasterUniqueValue(layer, rasterUniqueValueRenderer, symbol, 0, (int)obj2);
                        }
                        else if (rasterLayer.Renderer is IRasterStretchColorRampRenderer)
                        {
                            frmLayerRender frmLayerRender = new frmLayerRender(layer);
                            if (frmLayerRender.ShowDialog() != System.Windows.Forms.DialogResult.Cancel)
                            {
                                EnviVars.instance.TOCControl.Update();
                                RefreshView(layer);
                            }
                        }
                    }
                    else
                    {
                        ESRI.ArcGIS.Carto.ILegendClass pLC = new LegendClassClass();
                        ESRI.ArcGIS.Carto.ILegendGroup pLG = new LegendGroupClass();
                        if (obj is ILegendGroup)
                        {
                            pLG = (ILegendGroup)obj;
                        }
                        pLC        = pLG.get_Class((int)obj2);
                        pLC.Symbol = this.ChangeSymbol(layer, pLC.Symbol);
                        RefreshView(layer);
                    }
                }
            }
        }
示例#34
0
 //图层选择框 选择不同的图层
 private void cmbLayer_SelectedIndexChanged(object sender, EventArgs e)
 {
     for (int i = 0; i < pMap.LayerCount; i++)
     {
         string name = pMap.get_Layer(i).Name;
         if (pMap.get_Layer(i).Name == this.cmbLayer.Text)
         {
             pRLayer = pMap.get_Layer(i) as IRasterLayer;
             setRasterLayerFiledName(pRLayer, this.cmbFieldsName);
             break;
         }
     }
 }
示例#35
0
 //栅格行列号转换成XY坐标
 public static void NumbercovertXY(IRasterLayer pRasterLayer, ref double X, ref double Y, int column, int row)
 {
     try
     {
         IRaster  pRaster  = pRasterLayer.Raster;
         IRaster2 pRaster2 = pRaster as IRaster2;
         pRaster2.PixelToMap(column, row, out X, out Y);
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + "\n" + ex.ToString(), "异常");
     }
 }
示例#36
0
 private IRasterLayer IntersectRaster(IRasterLayer rsterLayer, IPolygon polygon2)
 {
     //  获得与组合成的面相叠加的栅格
     if (radioBtnKJ.Checked && polygon2 != null)
     {
         IExtractionOp op      = new RasterExtractionOpClass();
         IGeoDataset   dataset = op.Polygon((IGeoDataset)rsterLayer.Raster, polygon2, true);
         IRasterLayer  layer   = new RasterLayerClass();
         layer.CreateFromRaster((IRaster)dataset);
         rsterLayer = layer;
     }
     return(rsterLayer);
 }
示例#37
0
        private void 增强ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            List <IRasterLayer> list_layers = new List <IRasterLayer>();

            for (int i = 0; i < axMapControl1.LayerCount; i++)
            {
                if (axMapControl1.get_Layer(i) is IRasterLayer)
                {
                    IRasterLayer rasterlayer = (IRasterLayer)axMapControl1.get_Layer(i);
                    list_layers.Add(rasterlayer);
                }
            }
        }
示例#38
0
        public static IRasterLayer GetRasterLayerByName(string layerName)
        {
            IRasterLayer rasterLayer = null;

            for (int i = 0; i < map.LayerCount; i++)
            {
                if (map.get_Layer(i).Name == layerName)
                {
                    rasterLayer = (IRasterLayer)map.get_Layer(i);
                }
            }
            return(rasterLayer);
        }
示例#39
0
        public IRasterBand GetBand(IRasterLayer rasterlayer)
        {
            string                fullpath    = rasterlayer.FilePath;
            string                filePath    = System.IO.Path.GetDirectoryName(fullpath);
            string                fileName    = System.IO.Path.GetFileName(fullpath);
            IWorkspaceFactory     wsf         = new RasterWorkspaceFactoryClass();
            IWorkspace            ws          = wsf.OpenFromFile(filePath, 0);
            IRasterWorkspace      rasterws    = ws as IRasterWorkspace;
            IRasterDataset        rastdataset = rasterws.OpenRasterDataset(fileName);
            IRasterBandCollection bandcoll    = rastdataset as IRasterBandCollection;

            return(bandcoll.Item(0));
        }
示例#40
0
        /// <summary>
        /// Covert map coordinates to raster coordinates.
        /// </summary>
        /// <param name="mapCoors"></param>
        /// <param name="rasterLayer">Reference raster layer.</param>
        /// <returns></returns>
        public static Position MapCoor2RasterCoor(IPoint mapCoors, IRasterLayer rasterLayer)
        {
            if (rasterLayer != null)
            {
                IRaster2 raster = (IRaster2)rasterLayer.Raster;

                int row, col;
                raster.MapToPixel(mapCoors.X, mapCoors.Y, out col, out row);
                return(new Position(col, row));
            }

            return(null);
        }
示例#41
0
 public RenderRasterLayer(Map map, IRasterLayer layer, IRasterLayer rLayer, ICancelTracker cancelTracker)
 {
     _map           = map;
     _layer         = layer;
     _cancelTracker = cancelTracker;
     if (rLayer != null)
     {
         _interpolMethod = rLayer.InterpolationMethod;
         _transparency   = rLayer.Transparency;
         _transColor     = rLayer.TransparentColor;
         _filter         = rLayer.FilterImplementation;
     }
 }
示例#42
0
        // Steg 6-7, listener.
        private void btnCalcStat_Click(object sender, EventArgs e)
        {
            IRasterLayer safeLayer = utilities.searchRasterLayer("Säkra platser");

            if (cmbShapeList.Items.Count != 0 && safeLayer != null)
            {
                calcStat();
            }
            else
            {
                MessageBox.Show("Inga shapefiler tillagda eller säkra platser har inte beräknats.");
            }
        }
示例#43
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.InitialDirectory = this.txtOutPath.Text;
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                this.comboBoxInData.Text = openFileDialog1.FileName;
                string filePath = openFileDialog1.FileName;
                m_pRasterLyr = new RasterLayerClass();
                m_pRasterLyr.CreateFromFilePath(filePath);
            }
        }
示例#44
0
 public static List<string> getBandName(IRasterLayer rasterlayer)
 {
     string fullpath = rasterlayer.FilePath;
     string filePath = System.IO.Path.GetDirectoryName(fullpath);
     string fileName = System.IO.Path.GetFileName(fullpath);
     IWorkspaceFactory wsf = new RasterWorkspaceFactoryClass();
     IWorkspace ws = wsf.OpenFromFile(filePath, 0);
     IRasterWorkspace rasterws = ws as IRasterWorkspace;
     IRasterDataset rastdataset = rasterws.OpenRasterDataset(fileName);
     IRasterBandCollection bandcoll = rastdataset as IRasterBandCollection;
     List<string> itemband = new List<string>();
     for (int i = 0; i < bandcoll.Count; i++)
     {
         itemband.Add(bandcoll.Item(i).Bandname);
     }
     return itemband;
 }
 private void btn_OkScale_Click(object sender, EventArgs e)
 {
     try
     {
         string RasterName = cbb_RasterLayersStretch.SelectedItem.ToString();
         rasterlayer = GetRasterLayer(RasterName);
         RasterRender render = new RasterRender();
         pListRamp = style.pListRamp;
         render.RasterClassify(rasterlayer, cbb_MethodScale.SelectedValue.ToString(), Convert.ToInt32(cbb_NumberScale.SelectedValue), (IColorRamp)pListRamp[cbbs_ColorScale.SelectedIndex]);
         axmapcontrol.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
         axtoccontrol.Update();
         axmapcontrol.Extent = rasterlayer.AreaOfInterest;
         this.Close();
     }
     catch (Exception ec)
     {
         MessageBox.Show(ec.Message);
     }
 }
示例#46
0
 private IRasterLayer IntersectRaster(IRasterLayer rsterLayer, IPolygon polygon2)
 {
     //  获得与组合成的面相叠加的栅格
     if (radioBtnKJ.Checked && polygon2 != null)
     {
         IExtractionOp op = new RasterExtractionOpClass();
         IGeoDataset dataset = op.Polygon((IGeoDataset)rsterLayer.Raster, polygon2, true);
         IRasterLayer layer = new RasterLayerClass();
         layer.CreateFromRaster((IRaster)dataset);
         rsterLayer = layer;
     }
     return rsterLayer;
 }
示例#47
0
        /// <summary>
        /// Clear all data of active layer.
        /// </summary>
        public void ClearLayer()
        {
            this.activeLayer = null;
            this.selectedIColor = null;
            this.selectedValue = null;
            this.layerNameTextBox.Text = "";

            valueListBox.Items.Clear();
            listedValue.Clear();
        }
示例#48
0
 /// <summary>
 /// Load data of given active layer.
 /// </summary>
 /// <param name="activeLayer">A raster layer for painting.</param>
 public void LoadLayer(IRasterLayer activeLayer)
 {
     this.activeLayer = activeLayer;
     this.layerNameTextBox.Text = activeLayer.Name;
 }
示例#49
0
文件: frmSlope.cs 项目: lovelll/DQHP
 private void btnOpenData_Click(object sender, EventArgs e)
 {
     OpenFileDialog openFileDialog1 = new OpenFileDialog();
     openFileDialog1.InitialDirectory = this.txtOutPath.Text;
     if (openFileDialog1.ShowDialog() == DialogResult.OK)
     {
         comboBoxInData.Text = openFileDialog1.FileName;
         string filePath = openFileDialog1.FileName;
         m_pRasterLyr = new RasterLayerClass();
         m_pRasterLyr.CreateFromFilePath(filePath);
     }
 }
示例#50
0
        private void cancelButton_Click(object sender, EventArgs e)
        {
            returnLayer = null;

            this.Close();
        }
示例#51
0
        /// <summary>
        /// Creates a new instance of the raster symbolizer
        /// </summary>
        /// <param name="layer">The parent item</param>
        public RasterSymbolizer(IRasterLayer layer)
        {
            SetParentItem(layer);
            _parentLayer = layer;
            _raster = layer.DataSet;

            Configure();
        }
示例#52
0
        private void comboBoxInputData_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sLayerName = comboBoxInputData.Text;
            AxMapControl axMap = pMainFrm.getMapControl();

            try
            {
                for (int i = 0; i <= axMap.LayerCount - 1; i++)
                {
                    ILayer pLyr = axMap.get_Layer(i);
                    if (pLyr.Name == sLayerName)
                    {
                        if (pLyr is IRasterLayer)
                        {
                            m_pRasterLyr = pLyr as IRasterLayer;
                            IRaster pInRaster = m_pRasterLyr.Raster ;
                            RasterStatistics(pInRaster);
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

            }
        }
 /// <summary>
 /// Sets up the Table to work with the specified layer
 /// </summary>
 /// <param name="layer"></param>
 public void Initialize(IRasterLayer layer)
 {
     _originalLayer = layer;
     _newLayer = layer.Copy();
     _symbolizer = layer.Symbolizer;
     _newScheme = _symbolizer.Scheme;
     _originalScheme = (IColorScheme)_symbolizer.Scheme.Clone();
     _raster = layer.DataSet;
     GetSettings();
 }
 /// <summary>
 /// Creates a new instance of the unique values category Table
 /// </summary>
 /// <param name="layer">The feature set that is used</param>
 public RasterCategoryControl(IRasterLayer layer)
 {
     InitializeComponent();
     Configure();
     Initialize(layer);
 }
        private void fm_RasterRenderClassification_Load(object sender, EventArgs e)
        {
            CbxLayersAddItems();

            if (cbb_RasterLayersStretch.Items.Count != 0)
            {
                cbb_RasterLayersStretch.SelectedIndex = 0;
                cbb_RasterLayersScale.SelectedIndex = 0;
                rasterlayer = GetRasterLayer(cbb_RasterLayersStretch.SelectedItem.ToString());
                cbb_BandStretch.DataSource = RasterRender.getBandName(rasterlayer);
            }

            List<ComboBoxSym> list3 = new List<ComboBoxSym>();
            list3.Add(cbbs_ColorStretch);
            list3.Add(cbbs_ColorStretch2);
            style.Style("Color Ramps", list3);
            List<ComboBoxSym> list4 = new List<ComboBoxSym>();
            list4.Add(cbbs_ColorScale);
            list4.Add(cbbs_ColorScale2);
            style.Style("Color Ramps", list4);
            cbb_NumberScale.DataSource = classcount;
            cbb_MethodScale.DataSource = classmethod;
            cbbs_ColorStretch.SelectedIndex = 0;
            cbbs_ColorStretch2.SelectedIndex = 0;
            cbbs_ColorScale.SelectedIndex = 0;
            cbbs_ColorScale2.SelectedIndex = 0;
            cbb_MethodScale.SelectedIndex = 0;
            cbb_NumberScale.SelectedIndex = 0;
        }
示例#56
0
        private void okButton_Click(object sender, EventArgs e)
        {
            if (layerListView.SelectedItems.Count == 0)
            {
                MessageBox.Show("No layer is selected to edit.", "Note");
                return;
            }

            for (int i = 0; i < ArcMap.Document.FocusMap.LayerCount; i++)
            {
                ILayer player = ArcMap.Document.FocusMap.get_Layer(i);

                if (player is IRasterLayer)
                {
                    IRasterLayer rasterLayer = (IRasterLayer)player;
                    if (rasterLayer.FilePath == layerListView.SelectedItems[0].SubItems[1].Text)
                    {
                        returnLayer = rasterLayer;
                        break;
                    }

                }
            }

            this.Close();
        }
        private void cbb_RasterLayersStretch_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbb_RasterLayersStretch.SelectedItem != null)
            {
                string RasterName = cbb_RasterLayersStretch.SelectedItem.ToString();
                rasterlayer = GetRasterLayer(RasterName);

                cbb_BandStretch.DataSource = RasterRender.getBandName(rasterlayer);
            }
        }
 /// <summary>
 /// Initializes a new instance of the RasterLayerEventArgs class.
 /// </summary>
 /// <param name="rasterLayer">The IRasterLayer that is involved in this event.</param>
 public RasterLayerEventArgs(IRasterLayer rasterLayer)
 {
     _rasterLayer = rasterLayer;
 }
示例#59
0
文件: frmSlope.cs 项目: lovelll/DQHP
        private void comboBoxInData_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sLayerName = comboBoxInData.Text;
            try
            {
                for (int i = 0; i <= pMap.LayerCount - 1; i++)
                {
                    ILayer pLyr = pMap.get_Layer(i);
                    if (pLyr.Name == sLayerName)
                    {
                        if (pLyr is IRasterLayer)
                        {
                            m_pRasterLyr = pLyr as IRasterLayer;

                        }
                    }
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

            }
        }
 private void CbxLayersAddItems()
 {
     if (GetLayers() != null)
     {
         IEnumLayer layers = GetLayers();
         layers.Reset();
         ILayer layer = layers.Next();
         while (layer != null)
         {
             if (layer is IRasterLayer)
             {
                 rasterlayer = layer as IRasterLayer;
                 cbb_RasterLayersStretch.Items.Add(layer.Name);
                 cbb_RasterLayersScale.Items.Add(layer.Name);
             }
             layer = layers.Next();
         }
     }
 }