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; }
public frmRaterSym1(IRasterLayer rasLayer, AxMapControl mapcontrol, AxTOCControl toccontrol) { InitializeComponent(); this.rasterlayer = rasLayer; axmapcontrol = mapcontrol; axtoccontrol = toccontrol; }
//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; }
/// <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); } }
public frmSymbology(IRasterLayer rasterLayer, IMapControl2 mainMap, ITOCControl2 mainToc) { InitializeComponent(); m_RasterLayer = rasterLayer; m_MainMap = mainMap; m_MainTOC = mainToc; }
/// <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; } }
/// <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); } }
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(); }
/// <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(); }
/// <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(); }
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); } }
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; }
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; } }
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); } }
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); }
//获取最大最小栅格值 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(); }
/// <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); }
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(); }
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); }
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); }
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(); } } }
/// <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; }
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); }
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 { } }
/// <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); }
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); } } }
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); } } } }
//图层选择框 选择不同的图层 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; } } }
//栅格行列号转换成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(), "异常"); } }
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); }
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); } } }
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); }
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)); }
/// <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); }
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; } }
// 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."); } }
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); } }
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); } }
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; }
/// <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(); }
/// <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; }
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); } }
private void cancelButton_Click(object sender, EventArgs e) { returnLayer = null; this.Close(); }
/// <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(); }
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; }
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; }
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(); } } }