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 IFeatu
2、reLayer; 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(); IRgbC
5、olor BackColor = new RgbColorClass(); BackColor.Red = 234; BackColor.Blue = 128; BackColor.Green = 220; IRgbColor SymbolColor = new RgbColorClass(); SymbolColor.Red = 234; SymbolColor.Blue = 128; SymbolColor.G
6、reen = 220; ////点密度图渲染背景颜色 //ddSym.BackgroundColor = BackColor; ddSym.DotSize =8; ddSym.FixedPlacement = true; //ddSym.Color = SymbolColor; ILineSymbol pLineSymbol=new CartographicLineSymbolClass(); ddSym.Outl
7、ine = 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; DotD
9、ensityRenderer.DotDensitySymbol = ddSym; //确定一个点代表多少值 DotDensityRenderer .DotValue=0.2; //点密度渲染采用的颜色模式 DotDensityRenderer.ColorScheme = "Custom"; //创建点密度图渲染图例 DotDensityRenderer.CreateLegend();
10、 //设置符号大小是否固定 DotDensityRenderer.MaintainSize = true; //将点密度图渲染对象与渲染图层挂钩 pGeoFeatureLayer.Renderer = (IFeatureRenderer)DotDensityRenderer; //刷新地图和TOOCotrol IActiveView pActiveView = axMapControl1.Map as
11、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; //获取图层上的feature
13、 IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false); IFeature pFeature = pFeatureCursor.NextFeature(); // IFeatureRenderer PR=pGeoFeatur
14、eLayer.Renderer; //JoinData("县级区域", "DZGB", "sectioncode"); //join外部表 // int DC ; int desiredClasses = 5; string fieldName = "AREA"; int classesCount; double[] classes; string str
15、Output = ""; 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); pGeoFeatureLayer
18、 = (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, da
20、taFrequency); pClassify.Classify(dataValues, dataFrequency, ref desiredClasses); //pClassify.Classify(ref desiredClasses); classes = (double[])pClassify.ClassBreaks; classesCount = classes.Length; // Initialise a new Class Breaks ren
21、derer // Supply the number of Class Breaks and the field to perform the class breaks on pClassBreaksRenderer = new ClassBreaksRendererClass(); pClassBreaksRenderer.Field = fieldName; pClassBreaksRenderer.BreakCount = classesCount; pCla
22、ssBreaksRenderer.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 = 10
23、0; 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 S
26、impleFillSymbolClass(); pSimpleFillSymbol.Color = pColor; pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid; pClassBreaksRenderer.set_Symbol(index, (ISymbol)pSimpleFillSymbol); pClassBreaksRenderer.set_Break(index, classes[
27、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 o
29、bject customProperty = null; //IMapControl3 mapControl = null; customProperty = axMapControl1.CustomProperty; //ask the user to set a name for the new layer file SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFi
30、leDialog.Filter = "Layer File|*.lyr|All Files|*.*"; saveFileDialog.Title = "生成专题图"; saveFileDialog.RestoreDirectory = true; saveFileDialog.FileName = System.IO.Path.Combine(saveFileDialog.InitialDirectory, pGeoFeatureLayer.Name + ".lyr"); //get t
31、he 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
32、 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(save
33、FileDialog.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
34、 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; IFeatureLa
36、yer pFeatureLayer = pLayer as IFeatureLayer; IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer; //获取图层上的feature IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; IFeatureCursor pFeatureCursor = pF
37、eatureClass.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 geoFeatu
39、reLayer 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 ca
40、lled ", "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; pCo
42、lorRamp.CreateRamp(out ok); IEnumColors pEnumRamp; pEnumRamp = pColorRamp.Colors; //为每个值设置一个符号 int n = pFeatureClass.FeatureCount(null); for (int i = 0; i < n; i++) { IFeature pFeature = pFe
43、atureCursor.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(); axTOCC
47、ontrol1.Update(); } private void 等级图ToolStripMenuItem_Click(object sender, EventArgs e) { //获取当前图层 ,并把它设置成IGeoFeatureLayer的实例 IMap pMap = axMapControl1.Map; ILayer pLayer = pMap.get_Layer(0) as IFeatureLayer; IFeatureLayer p
48、FeatureLayer = 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 retrie






