1、 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 IFea
2、tureLayer; IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //获取图层上的feature IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false); IFeature pFeature
3、 = pFeatureCursor.NextFeature(); /////////////////////// /////////////////////////////////////////////////////////////////// //定义点密度图渲染组件 IDotDensityRenderer DotDensityRenderer = new DotDensityRendererClass(); //定义点密度图
4、渲染组件对象的渲染字段对象 IRendererFields flds = (IRendererFields)DotDensityRenderer; flds.AddField("FID", "FID"); //flds.AddField("Shape", "Shape"); //定义点密度图渲染得符号对象 IDotDensityFillSymbol ddSym = new DotDensityFillSymbolClass(); IRg
5、bColor BackColor = new RgbColorClass(); BackColor.Red = 234; BackColor.Blue = 128; BackColor.Green = 220; IRgbColor SymbolColor = new RgbColorClass(); SymbolColor.Red = 234; SymbolColor.Blue = 128; SymbolColor
6、Green = 220; ////点密度图渲染背景颜色 //ddSym.BackgroundColor = BackColor; ddSym.DotSize =8; ddSym.FixedPlacement = true; //ddSym.Color = SymbolColor; ILineSymbol pLineSymbol=new CartographicLineSymbolClass(); ddSym.Ou
7、tline = pLineSymbol; //定义符号数组 ISymbolArray symArray = (ISymbolArray)ddSym; //添加点密度图渲染的点符号到符号数组中去 ISimpleMarkerSymbol pMarkerSymbol = new SimpleMarkerSymbolClass(); pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;
8、 pMarkerSymbol.Size = 2; pMarkerSymbol.Color = SymbolColor;; symArray.AddSymbol(pMarkerSymbol as ISymbol ); //设置点密度图渲染的点符号 //DotDensityRenderer.DotDensitySymbol =symArray; Do
9、tDensityRenderer.DotDensitySymbol = ddSym; //确定一个点代表多少值 DotDensityRenderer .DotValue=0.2; //点密度渲染采用的颜色模式 DotDensityRenderer.ColorScheme = "Custom"; //创建点密度图渲染图例 DotDensityRenderer.CreateLegend();
10、 //设置符号大小是否固定 DotDensityRenderer.MaintainSize = true; //将点密度图渲染对象与渲染图层挂钩 pGeoFeatureLayer.Renderer = (IFeatureRenderer)DotDensityRenderer; //刷新地图和TOOCotrol IActiveView pActiveView = axMapControl1.Map a
11、s IActiveView; pActiveView.Refresh(); axTOCControl1.Update(); } private void 分层设色ToolStripMenuItem_Click(object sender, EventArgs e) { //获取当前图层 ,并把它设置成IGeoFeatureLayer的实例
12、 IMap pMap = axMapControl1.Map; ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer; IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //获取图层上的featu
13、re IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false); IFeature pFeature = pFeatureCursor.NextFeature(); // IFeatureRenderer PR=pGeoFeat
14、ureLayer.Renderer; //JoinData("县级区域", "DZGB", "sectioncode"); //join外部表 // int DC ; int desiredClasses = 5; string fieldName = "AREA"; int classesCount; double[] classes; string s
15、trOutput = ""; bool ok; object dataFrequency; object dataValues; ITable pTable ; //IClassify pClassify; EqualIntervalClass pClassify; //IBasicHistogram pTableHistogram = new BasicTableHistogramClass();
16、 //IHistogram pTableHistogram = new BasicTableHistogramClass(); ITableHistogram pTableHistogram = new BasicTableHistogramClass() as ITableHistogram; IBasicHistogram pHistogram; IClassBreaksRenderer pClassBreaksRenderer; IHsvColor pFromColor;
17、 IHsvColor pToColor; IAlgorithmicColorRamp pAlgorithmicColorRamp; IEnumColors pEnumColors; IColor pColor; ISimpleFillSymbol pSimpleFillSymbol; pLayer = (IFeatureLayer)axMapControl1.get_Layer(0); pGeoFeatureLay
18、er = (IGeoFeatureLayer)pLayer; pTable = (ITable)pGeoFeatureLayer; pHistogram = (IBasicHistogram)pTableHistogram; // Get values and frequencies for the field pTableHistogram.Field = fieldName; pTableHistogram.Table = pTable;
19、 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,
20、dataFrequency); pClassify.Classify(dataValues, dataFrequency, ref desiredClasses); //pClassify.Classify(ref desiredClasses); classes = (double[])pClassify.ClassBreaks; classesCount = classes.Length; // Initialise a new Class Breaks r
21、enderer // Supply the number of Class Breaks and the field to perform the class breaks on pClassBreaksRenderer = new ClassBreaksRendererClass(); pClassBreaksRenderer.Field = fieldName; pClassBreaksRenderer.BreakCount = classesCount; pC
22、lassBreaksRenderer.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 =
23、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
24、 pAlgorithmicColorRamp = new AlgorithmicColorRampClass(); pAlgorithmicColorRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm; pAlgorithmicColorRamp.FromColor = pFromColor; pAlgorithmicColorRamp.ToColor = pToColor; pAlgorithmicColorRamp.Size
25、 = classesCount; pAlgorithmicColorRamp.CreateRamp(out ok); pEnumColors = pAlgorithmicColorRamp.Colors; for (int index = 0; index < classesCount - 1; index++) { pColor = pEnumColors.Next(); pSimpleFillSymbol = new
26、 SimpleFillSymbolClass(); pSimpleFillSymbol.Color = pColor; pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid; pClassBreaksRenderer.set_Symbol(index, (ISymbol)pSimpleFillSymbol); pClassBreaksRenderer.set_Break(index, classe
27、s[index + 1]); // Store each break value for user output strOutput += "-" + classes[index + 1] + "\n"; } pGeoFeatureLayer.Renderer = (IFeatureRenderer)pClassBreaksRenderer; //this.axMapControl1.Refresh(); //////////
28、/////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// //get the custom property from which is supposed to be the layer to be saved
29、 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(); save
30、FileDialog.Filter = "Layer File|*.lyr|All Files|*.*"; saveFileDialog.Title = "生成专题图"; saveFileDialog.RestoreDirectory = true; saveFileDialog.FileName = System.IO.Path.Combine(saveFileDialog.InitialDirectory, pGeoFeatureLayer.Name + ".lyr"); //get
31、 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 dele
32、te 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(sa
33、veFileDialog.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
34、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); }
35、 } } private void 单值图ToolStripMenuItem1_Click(object sender, EventArgs e) { //获取当前图层 ,并把它设置成IGeoFeatureLayer的实例 IMap pMap = axMapControl1.Map; ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer; IFeature
36、Layer pFeatureLayer = pLayer as IFeatureLayer; IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //获取图层上的feature IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor =
37、pFeatureClass.Search(null, false); //定义单值图渲染组件 IUniqueValueRenderer pUniqueValueRenderer = new UniqueValueRendererClass(); //设置渲染字段对象 pUniqueValueRenderer.FieldCount = 1; pUniqueValueRenderer.set_Field(0, "ID"
38、); //创建填充符号 ISimpleFillSymbol PFillSymbol = new SimpleFillSymbolClass(); pUniqueValueRenderer.DefaultSymbol = (ISymbol)PFillSymbol; pUniqueValueRenderer.UseDefaultSymbol = false; //QI the table from the geoFea
39、tureLayer 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
40、called ", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); } //创建并设置随机色谱 IRandomColorRamp pColorRamp = new RandomColorRampClass(); pColorRamp.StartHue = 0; pColorRamp.MinValue = 99;
41、 pColorRamp.MinSaturation = 15; pColorRamp.EndHue = 360; pColorRamp.MaxValue = 100; pColorRamp.MaxSaturation = 30; pColorRamp.Size = 100; //pColorRamp.Size = pUniqueValueRenderer.ValueCount; bool ok = true; p
42、ColorRamp.CreateRamp(out ok); IEnumColors pEnumRamp; pEnumRamp = pColorRamp.Colors; //为每个值设置一个符号 int n = pFeatureClass.FeatureCount(null); for (int i = 0; i < n; i++) { IFeature pFeature = p
43、FeatureCursor.NextFeature(); IClone pSourceClone = PFillSymbol as IClone; ISimpleFillSymbol pSimpleFillSymbol = pSourceClone.Clone() as ISimpleFillSymbol ; string pFeatureValue = pFeature.get_Value(pFeature.Fields.FindField("ID")).ToString();
44、 pUniqueValueRenderer.AddValue(pFeatureValue, "烈度", (ISymbol)pSimpleFillSymbol); } //为每个符号设置颜色 for (int i = 0; i <= pUniqueValueRenderer.ValueCount - 1; i++) { string xv = pUniqueValueRenderer.get_Value(i); if (xv != "")
45、 { ISimpleFillSymbol pNextSymbol = (ISimpleFillSymbol)pUniqueValueRenderer.get_Symbol(xv); pNextSymbol.Color = pEnumRamp.Next(); pUniqueValueRenderer.set_Symbol(xv, (ISymbol)pNextSymbol); } }
46、 //将单值图渲染对象与渲染图层挂钩 pGeoFeatureLayer.Renderer = (IFeatureRenderer)pUniqueValueRenderer; pGeoFeatureLayer.DisplayField = "ID"; //刷新地图和TOOCotrol IActiveView pActiveView = axMapControl1.Map as IActiveView; pActiveView.Refresh(); axTO
47、CControl1.Update(); } private void 等级图ToolStripMenuItem_Click(object sender, EventArgs e) { //获取当前图层 ,并把它设置成IGeoFeatureLayer的实例 IMap pMap = axMapControl1.Map; ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer; IFeatureLayer
48、 pFeatureLayer = pLayer as IFeatureLayer; IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //获取图层上的feature IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
49、 IFeature pFeature = pFeatureCursor.NextFeature(); ////////////////////////////////////////////////////////////////////// //定义所需的接口对象和相关变量 IClassBreaksUIProperties pUIProperties; object dataValues; object dataFrequency
50、 //double[] cb; int breakIndex; long ClassesCount; int numClass; numClass = 10; double[] Classes; ////////////////////////////////////////////////////////////////////// /* We're going to retr






