C#+AE专题图制作.doc_第1页
C#+AE专题图制作.doc_第2页
C#+AE专题图制作.doc_第3页
C#+AE专题图制作.doc_第4页
C#+AE专题图制作.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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, classesindex + 1); / Store each break value for user output strOutput += - + classesindex + 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 hed 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(Cant 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; / /* Were going to retrieve frequency data from a population field and then classify this data*/ ITable pTable; pTable = pFeatureClass as ITable; IBasicHistogram pBasicHist = new BasicTableHistogramClass(); ITableHistogram pTableHist; pTableHist = (ITableHistogram)pBasicHist; /Get values and frequencies for the population field into a table histogram object pTableHist.Field = AREA; pTableHist.Table = pTable; pBasicHist.GetHistogram(out dataValues, out dataFrequency); IClassifyGEN pClassifyGEN = new QuantileClass(); pClassifyGEN.Classify(dataValues, dataFrequency, ref numClass); Classes = (double)pClassifyGEN.ClassBreaks; ClassesCount = long.Parse(Classes.GetUpperBound(0).ToString(); /Initialise a new class breaks renderer and supply the number of class breaks and the field to perform the class breaks on. IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass(); pClassBreaksRenderer.Field = AREA; /pClassBreaksRenderer.BreakCount = ClassesCount; pClassBreaksRenderer.MinimumBreak = Classes0; pClassBreaksRenderer.SortClassesAscending = true; /设置着色对象的分级数目 pClassBreaksRenderer.BreakCount = int.Parse(ClassesCount.ToString(); /创建并设置随机色谱 IAlgorithmicColorRamp pColorRamp = new AlgorithmicColorRampClass(); pColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm; IEnumColors pEnumColors; IRgbColor pColor1 = new RgbColorClass(); IRgbColor pColor2 = new RgbColorClass(); pColor1.Red = 255; pColor1.Green = 210; pColor1.Blue = 210; pColor2.Red = 190; pColor2.Green = 0; pColor2.Blue = 170; pColorRamp.FromColor = pColor1; pColorRamp.ToColor = pColor2; pColorRamp.Size = numClass; bool ok = true; pColorRamp.CreateRamp(out ok); pEnumColors = pColorRamp.Colors; pEnumColors.Reset();/ use this interface to set dialog properties pUIProperties = pClassBreaksRenderer as IClassBreaksUIProperties; pUIProperties.ColorRamp = Custom; ISimpleFillSymbol pSimpleMarkerSymbol = new SimpleFillSymbolClass(); IColor pColor; int colors = new intnumClass; / be careful, indices are different for the diff lists for (breakIndex = 0; breakIndex ClassesCount; breakIndex+) pClassBreaksRenderer.set_Label (breakIndex,ClassesbreakIndex + - + ClassesbreakIndex + 1); pUIProperties.set_LowBreak (breakIndex ,ClassesbreakIndex)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论