收藏 分销(赏)

C#专题图代码.docx

上传人:xrp****65 文档编号:6120801 上传时间:2024-11-28 格式:DOCX 页数:18 大小:24.37KB 下载积分:10 金币
下载 相关 举报
C#专题图代码.docx_第1页
第1页 / 共18页
C#专题图代码.docx_第2页
第2页 / 共18页


点击查看更多>>
资源描述
private void 点密度图ToolStripMenuItem_Click(object sender, EventArgs e) { //获取当前图层 ,并把它设置成IGeoFeatureLayer的实例 IMap pMap = axMapControl1.Map; ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer; IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //获取图层上的feature IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false); IFeature pFeature = pFeatureCursor.NextFeature(); /////////////////////// /////////////////////////////////////////////////////////////////// //定义点密度图渲染组件 IDotDensityRenderer DotDensityRenderer = new DotDensityRendererClass(); //定义点密度图渲染组件对象的渲染字段对象 IRendererFields flds = (IRendererFields)DotDensityRenderer; flds.AddField("FID", "FID"); //flds.AddField("Shape", "Shape"); //定义点密度图渲染得符号对象 IDotDensityFillSymbol ddSym = new DotDensityFillSymbolClass(); IRgbColor BackColor = new RgbColorClass(); BackColor.Red = 234; BackColor.Blue = 128; BackColor.Green = 220; IRgbColor SymbolColor = new RgbColorClass(); SymbolColor.Red = 234; SymbolColor.Blue = 128; SymbolColor.Green = 220; ////点密度图渲染背景颜色 //ddSym.BackgroundColor = BackColor; ddSym.DotSize =8; ddSym.FixedPlacement = true; //ddSym.Color = SymbolColor; ILineSymbol pLineSymbol=new CartographicLineSymbolClass(); ddSym.Outline = pLineSymbol; //定义符号数组 ISymbolArray symArray = (ISymbolArray)ddSym; //添加点密度图渲染的点符号到符号数组中去 ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbolClass(); pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle; pMarkerSymbol.Size = 2; pMarkerSymbol.Color = SymbolColor;; symArray.AddSymbol(pMarkerSymbol as ISymbol ); //设置点密度图渲染的点符号 //DotDensityRenderer.DotDensitySymbol =symArray; DotDensityRenderer.DotDensitySymbol = ddSym; //确定一个点代表多少值 DotDensityRenderer .DotValue=0.2; //点密度渲染采用的颜色模式 DotDensityRenderer.ColorScheme = "Custom"; //创建点密度图渲染图例 DotDensityRenderer.CreateLegend(); //设置符号大小是否固定 DotDensityRenderer.MaintainSize = true; //将点密度图渲染对象与渲染图层挂钩 pGeoFeatureLayer.Renderer = (IFeatureRenderer)DotDensityRenderer; //刷新地图和TOOCotrol IActiveView pActiveView = axMapControl1.Map as IActiveView; pActiveView.Refresh(); axTOCControl1.Update(); } private void 分层设色ToolStripMenuItem_Click(object sender, EventArgs e) { //获取当前图层 ,并把它设置成IGeoFeatureLayer的实例 IMap pMap = axMapControl1.Map; ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer; IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //获取图层上的feature IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false); IFeature pFeature = pFeatureCursor.NextFeature(); // IFeatureRenderer PR=pGeoFeatureLayer.Renderer; //JoinData("县级区域", "DZGB", "sectioncode"); //join外部表 // int DC ; int desiredClasses = 5; string fieldName = "AREA"; int classesCount; double[] classes; string strOutput = ""; bool ok; object dataFrequency; object dataValues; ITable pTable ; //IClassify pClassify; EqualIntervalClass pClassify; //IBasicHistogram pTableHistogram = new BasicTableHistogramClass(); //IHistogram pTableHistogram = new BasicTableHistogramClass(); ITableHistogram pTableHistogram = new BasicTableHistogramClass() as ITableHistogram; IBasicHistogram pHistogram; IClassBreaksRenderer pClassBreaksRenderer; IHsvColor pFromColor; IHsvColor pToColor; IAlgorithmicColorRamp pAlgorithmicColorRamp; IEnumColors pEnumColors; IColor pColor; ISimpleFillSymbol pSimpleFillSymbol; pLayer = (IFeatureLayer)axMapControl1.get_Layer(0); pGeoFeatureLayer = (IGeoFeatureLayer)pLayer; pTable = (ITable)pGeoFeatureLayer; pHistogram = (IBasicHistogram)pTableHistogram; // Get values and frequencies for the field pTableHistogram.Field = fieldName; pTableHistogram.Table = pTable; pHistogram.GetHistogram(out dataValues, out dataFrequency); // Put values and frequencies into an Equal Interval Classify Object pClassify = new EqualIntervalClass(); //pClassify = new NaturalBreaksClass(); pClassify.SetHistogramData(dataValues, dataFrequency); pClassify.Classify(dataValues, dataFrequency, ref desiredClasses); //pClassify.Classify(ref desiredClasses); classes = (double[])pClassify.ClassBreaks; classesCount = classes.Length; // Initialise a new Class Breaks renderer // Supply the number of Class Breaks and the field to perform the class breaks on pClassBreaksRenderer = new ClassBreaksRendererClass(); pClassBreaksRenderer.Field = fieldName; pClassBreaksRenderer.BreakCount = classesCount; pClassBreaksRenderer.SortClassesAscending = true; // Use algorithmic color ramp to generate an range of colors between YELLOW to RED // Initial color: YELLOW pFromColor = new HsvColorClass(); pFromColor.Hue = 60; pFromColor.Saturation = 100; pFromColor.Value = 96; // Final color: RED pToColor = new HsvColorClass(); pToColor.Hue = 0; pToColor.Saturation = 100; pToColor.Value = 96; // Set up HSV Color ramp to span from YELLOW to RED pAlgorithmicColorRamp = new AlgorithmicColorRampClass(); pAlgorithmicColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; pAlgorithmicColorRamp.FromColor = pFromColor; pAlgorithmicColorRamp.ToColor = pToColor; pAlgorithmicColorRamp.Size = classesCount; pAlgorithmicColorRamp.CreateRamp(out ok); pEnumColors = pAlgorithmicColorRamp.Colors; for (int index = 0; index < classesCount - 1; index++) { pColor = pEnumColors.Next(); pSimpleFillSymbol = new SimpleFillSymbolClass(); pSimpleFillSymbol.Color = pColor; pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid; pClassBreaksRenderer.set_Symbol(index, (ISymbol)pSimpleFillSymbol); pClassBreaksRenderer.set_Break(index, classes[index + 1]); // Store each break value for user output strOutput += "-" + classes[index + 1] + "\n"; } pGeoFeatureLayer.Renderer = (IFeatureRenderer)pClassBreaksRenderer; //this.axMapControl1.Refresh(); ///////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// //get the custom property from which is supposed to be the layer to be saved object customProperty = null; //IMapControl3 mapControl = null; customProperty = axMapControl1.CustomProperty; //ask the user to set a name for the new layer file SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Layer File|*.lyr|All Files|*.*"; saveFileDialog.Title = "生成专题图"; saveFileDialog.RestoreDirectory = true; saveFileDialog.FileName = System.IO.Path.Combine(saveFileDialog.InitialDirectory, pGeoFeatureLayer.Name + ".lyr"); //get the layer name from the user DialogResult dr = saveFileDialog.ShowDialog(); if (saveFileDialog.FileName != "" && dr == DialogResult.OK) { if (System.IO.File.Exists(saveFileDialog.FileName)) { //try to delete the existing file System.IO.File.Delete(saveFileDialog.FileName); } //create a new LayerFile instance ILayerFile layerFile = new LayerFileClass(); //create a new layer file layerFile.New(saveFileDialog.FileName); //attach the layer file with the actual layer layerFile.ReplaceContents((ILayer)pGeoFeatureLayer); //save the layer file layerFile.Save(); //ask the user whether he'd like to add the layer to the map if (DialogResult.Yes == MessageBox.Show("Would you like to add the layer to the map?", "Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { axMapControl1.AddLayerFromFile(saveFileDialog.FileName, 0); } } } private void 单值图ToolStripMenuItem1_Click(object sender, EventArgs e) { //获取当前图层 ,并把它设置成IGeoFeatureLayer的实例 IMap pMap = axMapControl1.Map; ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer; IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //获取图层上的feature IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false); //定义单值图渲染组件 IUniqueValueRenderer pUniqueValueRenderer = new UniqueValueRendererClass(); //设置渲染字段对象 pUniqueValueRenderer.FieldCount = 1; pUniqueValueRenderer.set_Field(0, "ID"); //创建填充符号 ISimpleFillSymbol PFillSymbol = new SimpleFillSymbolClass(); pUniqueValueRenderer.DefaultSymbol = (ISymbol)PFillSymbol; pUniqueValueRenderer.UseDefaultSymbol = false; //QI the table from the geoFeatureLayer and get the field number of ITable pTable; int fieldNumber; pTable = pGeoFeatureLayer as ITable ; fieldNumber = pTable.FindField("ID"); if (fieldNumber == -1) { MessageBox.Show("Can't find field called ", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); } //创建并设置随机色谱 IRandomColorRamp pColorRamp = new RandomColorRampClass(); pColorRamp.StartHue = 0; pColorRamp.MinValue = 99; pColorRamp.MinSaturation = 15; pColorRamp.EndHue = 360; pColorRamp.MaxValue = 100; pColorRamp.MaxSaturation = 30; pColorRamp.Size = 100; //pColorRamp.Size = pUniqueValueRenderer.ValueCount; bool ok = true; pColorRamp.CreateRamp(out ok); IEnumColors pEnumRamp; pEnumRamp = pColorRamp.Colors; //为每个值设置一个符号 int n = pFeatureClass.FeatureCount(null); for (int i = 0; i < n; i++) { IFeature pFeature = pFeatureCursor.NextFeature(); IClone pSourceClone = PFillSymbol as IClone; ISimpleFillSymbol pSimpleFillSymbol = pSourceClone.Clone() as ISimpleFillSymbol ; string pFeatureValue = pFeature.get_Value(pFeature.Fields.FindField("ID")).ToString(); pUniqueValueRenderer.AddValue(pFeatureValue, "烈度", (ISymbol)pSimpleFillSymbol); } //为每个符号设置颜色 for (int i = 0; i <= pUniqueValueRenderer.ValueCount - 1; i++) { string xv = pUniqueValueRenderer.get_Value(i); if (xv != "") { ISimpleFillSymbol pNextSymbol = (ISimpleFillSymbol)pUniqueValueRenderer.get_Symbol(xv); pNextSymbol.Color = pEnumRamp.Next(); pUniqueValueRenderer.set_Symbol(xv, (ISymbol)pNextSymbol); } } //将单值图渲染对象与渲染图层挂钩 pGeoFeatureLayer.Renderer = (IFeatureRenderer)pUniqueValueRenderer; pGeoFeatureLayer.DisplayField = "ID"; //刷新地图和TOOCotrol IActiveView pActiveView = axMapControl1.Map as IActiveView; pActiveView.Refresh(); axTOCControl1.Update(); } private void 等级图ToolStripMenuItem_Click(object sender, EventArgs e) { //获取当前图层 ,并把它设置成IGeoFeatureLayer的实例 IMap pMap = axMapControl1.Map; ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer; IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //获取图层上的feature IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false); IFeature pFeature = pFeatureCursor.NextFeature(); ////////////////////////////////////////////////////////////////////// //定义所需的接口对象和相关变量 IClassBreaksUIProperties pUIProperties; object dataValues; object dataFrequency; //double[] cb; int breakIndex; long ClassesCount; int numClass; numClass = 10; double[] Classes; ////////////////////////////////////////////////////////////////////// /* We're going to retrie
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服