专题图实现代码.docx
- 文档编号:27840894
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:28
- 大小:21.80KB
专题图实现代码.docx
《专题图实现代码.docx》由会员分享,可在线阅读,更多相关《专题图实现代码.docx(28页珍藏版)》请在冰豆网上搜索。
专题图实现代码
privatevoid点密度图ToolStripMenuItem_Click(objectsender,EventArgse)
{
//获取当前图层,并把它设置成IGeoFeatureLayer的实例
IMappMap=axMapControl1.Map;
ILayerpLayer=pMap.get_Layer(0)asIFeatureLayer;
IFeatureLayerpFeatureLayer=pLayerasIFeatureLayer;
IGeoFeatureLayerpGeoFeatureLayer=pLayerasIGeoFeatureLayer;
//获取图层上的feature
IFeatureClasspFeatureClass=pFeatureLayer.FeatureClass;
IFeatureCursorpFeatureCursor=pFeatureClass.Search(null,false);
IFeaturepFeature=pFeatureCursor.NextFeature();
///////////////////////
///////////////////////////////////////////////////////////////////
//定义点密度图渲染组件
IDotDensityRendererDotDensityRenderer=newDotDensityRendererClass();
//定义点密度图渲染组件对象的渲染字段对象
IRendererFieldsflds=(IRendererFields)DotDensityRenderer;
flds.AddField("FID","FID");
//flds.AddField("Shape","Shape");
//定义点密度图渲染得符号对象
IDotDensityFillSymbolddSym=newDotDensityFillSymbolClass();
IRgbColorBackColor=newRgbColorClass();
BackColor.Red=234;
BackColor.Blue=128;
BackColor.Green=220;
IRgbColorSymbolColor=newRgbColorClass();
SymbolColor.Red=234;
SymbolColor.Blue=128;
SymbolColor.Green=220;
////点密度图渲染背景颜色
//ddSym.BackgroundColor=BackColor;
ddSym.DotSize=8;
ddSym.FixedPlacement=true;
//ddSym.Color=SymbolColor;
ILineSymbolpLineSymbol=newCartographicLineSymbolClass();
ddSym.Outline=pLineSymbol;
//定义符号数组
ISymbolArraysymArray=(ISymbolArray)ddSym;
//添加点密度图渲染的点符号到符号数组中去
ISimpleMarkerSymbolpMarkerSymbol=newSimpleMarkerSymbolClass();
pMarkerSymbol.Style=esriSimpleMarkerStyle.esriSMSCircle;
pMarkerSymbol.Size=2;
pMarkerSymbol.Color=SymbolColor;;
symArray.AddSymbol(pMarkerSymbolasISymbol);
//设置点密度图渲染的点符号
//DotDensityRenderer.DotDensitySymbol=symArray;
DotDensityRenderer.DotDensitySymbol=ddSym;
//确定一个点代表多少值
DotDensityRenderer.DotValue=0.2;
//点密度渲染采用的颜色模式
DotDensityRenderer.ColorScheme="Custom";
//创建点密度图渲染图例
DotDensityRenderer.CreateLegend();
//设置符号大小是否固定
DotDensityRenderer.MaintainSize=true;
//将点密度图渲染对象与渲染图层挂钩
pGeoFeatureLayer.Renderer=(IFeatureRenderer)DotDensityRenderer;
//刷新地图和TOOCotrol
IActiveViewpActiveView=axMapControl1.MapasIActiveView;
pActiveView.Refresh();
axTOCControl1.Update();
}
privatevoid分层设色ToolStripMenuItem_Click(objectsender,EventArgse)
{
//获取当前图层,并把它设置成IGeoFeatureLayer的实例
IMappMap=axMapControl1.Map;
ILayerpLayer=pMap.get_Layer(0)asIFeatureLayer;
IFeatureLayerpFeatureLayer=pLayerasIFeatureLayer;
IGeoFeatureLayerpGeoFeatureLayer=pLayerasIGeoFeatureLayer;
//获取图层上的feature
IFeatureClasspFeatureClass=pFeatureLayer.FeatureClass;
IFeatureCursorpFeatureCursor=pFeatureClass.Search(null,false);
IFeaturepFeature=pFeatureCursor.NextFeature();
//
IFeatureRendererPR=pGeoFeatureLayer.Renderer;
//JoinData("县级区域","DZGB","sectioncode");//join外部表
//intDC;
intdesiredClasses=5;
stringfieldName="AREA";
intclassesCount;
double[]classes;
stringstrOutput="";
boolok;
objectdataFrequency;
objectdataValues;
ITablepTable;
//IClassifypClassify;
EqualIntervalClasspClassify;
//IBasicHistogrampTableHistogram=newBasicTableHistogramClass();
//IHistogrampTableHistogram=newBasicTableHistogramClass();
ITableHistogrampTableHistogram=newBasicTableHistogramClass()asITableHistogram;
IBasicHistogrampHistogram;
IClassBreaksRendererpClassBreaksRenderer;
IHsvColorpFromColor;
IHsvColorpToColor;
IAlgorithmicColorRamppAlgorithmicColorRamp;
IEnumColorspEnumColors;
IColorpColor;
ISimpleFillSymbolpSimpleFillSymbol;
pLayer=(IFeatureLayer)axMapControl1.get_Layer(0);
pGeoFeatureLayer=(IGeoFeatureLayer)pLayer;
pTable=(ITable)pGeoFeatureLayer;
pHistogram=(IBasicHistogram)pTableHistogram;
//Getvaluesandfrequenciesforthefield
pTableHistogram.Field=fieldName;
pTableHistogram.Table=pTable;
pHistogram.GetHistogram(outdataValues,outdataFrequency);
//PutvaluesandfrequenciesintoanEqualIntervalClassifyObject
pClassify=newEqualIntervalClass();
//pClassify=newNaturalBreaksClass();
pClassify.SetHistogramData(dataValues,dataFrequency);
pClassify.Classify(dataValues,dataFrequency,refdesiredClasses);
//pClassify.Classify(refdesiredClasses);
classes=(double[])pClassify.ClassBreaks;
classesCount=classes.Length;
//InitialiseanewClassBreaksrenderer
//SupplythenumberofClassBreaksandthefieldtoperformtheclassbreakson
pClassBreaksRenderer=newClassBreaksRendererClass();
pClassBreaksRenderer.Field=fieldName;
pClassBreaksRenderer.BreakCount=classesCount;
pClassBreaksRenderer.SortClassesAscending=true;
//UsealgorithmiccolorramptogenerateanrangeofcolorsbetweenYELLOWtoRED
//Initialcolor:
YELLOW
pFromColor=newHsvColorClass();
pFromColor.Hue=60;
pFromColor.Saturation=100;
pFromColor.Value=96;
//Finalcolor:
RED
pToColor=newHsvColorClass();
pToColor.Hue=0;
pToColor.Saturation=100;
pToColor.Value=96;
//SetupHSVColorramptospanfromYELLOWtoRED
pAlgorithmicColorRamp=newAlgorithmicColorRampClass();
pAlgorithmicColorRamp.Algorithm=esriColorRampAlgorithm.esriHSVAlgorithm;
pAlgorithmicColorRamp.FromColor=pFromColor;
pAlgorithmicColorRamp.ToColor=pToColor;
pAlgorithmicColorRamp.Size=classesCount;
pAlgorithmicColorRamp.CreateRamp(outok);
pEnumColors=pAlgorithmicColorRamp.Colors;
for(intindex=0;index { pColor=pEnumColors.Next(); pSimpleFillSymbol=newSimpleFillSymbolClass(); pSimpleFillSymbol.Color=pColor; pSimpleFillSymbol.Style=esriSimpleFillStyle.esriSFSSolid; pClassBreaksRenderer.set_Symbol(index,(ISymbol)pSimpleFillSymbol); pClassBreaksRenderer.set_Break(index,classes[index+1]); //Storeeachbreakvalueforuseroutput strOutput+="-"+classes[index+1]+"\n"; } pGeoFeatureLayer.Renderer=(IFeatureRenderer)pClassBreaksRenderer; //this.axMapControl1.Refresh(); ///////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// //getthecustompropertyfromwhichissupposedtobethelayertobesaved objectcustomProperty=null; //IMapControl3mapControl=null; customProperty=axMapControl1.CustomProperty; //asktheusertosetanameforthenewlayerfile SaveFileDialogsaveFileDialog=newSaveFileDialog(); saveFileDialog.Filter="LayerFile|*.lyr|AllFiles|*.*"; saveFileDialog.Title="生成专题图"; saveFileDialog.RestoreDirectory=true; saveFileDialog.FileName=System.IO.Path.Combine(saveFileDialog.InitialDirectory,pGeoFeatureLayer.Name+".lyr"); //getthelayernamefromtheuser DialogResultdr=saveFileDialog.ShowDialog(); if(saveFileDialog.FileName! =""&&dr==DialogResult.OK) { if(System.IO.File.Exists(saveFileDialog.FileName)) { //trytodeletetheexistingfile System.IO.File.Delete(saveFileDialog.FileName); } //createanewLayerFileinstance ILayerFilelayerFile=newLayerFileClass(); //createanewlayerfile layerFile.New(saveFileDialog.FileName); //attachthelayerfilewiththeactuallayer layerFile.ReplaceContents((ILayer)pGeoFeatureLayer); //savethelayerfile layerFile.Save(); //asktheuserwhetherhe'dliketoaddthelayertothemap if(DialogResult.Yes==MessageBox.Show("Wouldyouliketoaddthelayertothemap? ","Message",MessageBoxButtons.YesNo,MessageBoxIcon.Question)) { axMapControl1.AddLayerFromFile(saveFileDialog.FileName,0); } } } privatevoid单值图ToolStripMenuItem1_Click(objectsender,EventArgse) { //获取当前图层,并把它设置成IGeoFeatureLayer的实例 IMappMap=axMapControl1.Map; ILayerpLayer=pMap.get_Layer(0)asIFeatureLayer; IFeatureLayerpFeatureLayer=pLayerasIFeatureLayer; IGeoFeatureLayerpGeoFeatureLayer=pLayerasIGeoFeatureLayer; //获取图层上的feature IFeatureClasspFeatureClass=pFeatureLayer.FeatureClass; IFeatureCursorpFeatureCursor=pFeatureClass.Search(null,false); //定义单值图渲染组件 IUniqueValueRendererpUniqueValueRenderer=newUniqueValueRendererClass(); //设置渲染字段对象 pUniqueValueRenderer.FieldCount=1; pUniqueValueRenderer.set_Field(0,"ID"); //创建填充符号 ISimpleFillSymbolPFillSymbol=newSimpleFillSymbolClass(); pUniqueValueRenderer.DefaultSymbol=(ISymbol)PFillSymbol; pUniqueValueRenderer.UseDefaultSymbol=false; //QIthetablefromthegeoFeatureLayerandgetthefieldnumberof ITablepTable; intfieldNumber; pTable=pGeoFeatureLayerasITable; fieldNumber=pTable.FindField("ID"); if(fieldNumber==-1) { MessageBox.Show("Can'tfindfieldcalled","Message",MessageBoxButtons.OK,MessageBoxIcon.Information); } //创建并设置随机色谱 IRandomColorRamppColorRamp=newRandomColorRampClass(); 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; boolok=true; pColorRamp.CreateRamp(outok); IEnumColorspEnumRamp; pEnumRamp=pColorRamp.Colors; //为每个值设置一个符号 intn=pFeatureClass.FeatureCount(null); for(inti=0;i { IFeaturepFeature=pFeatureCursor.NextFeature(); IClonepSourceClone=PFillSymbolasIClone; ISimpleFillSymbolpSimpleFillSymbol=pSourceClone.Clone()asISimpleFillSymbol; stringpFeatureValue=pFeature.get_Value(pFeature.Fields.FindField("ID")).ToString(); pUniqueValueRenderer.AddValue(pFeatureValue,"烈度",(ISymbol)pSimpleFillSymbol); } //为每个符号设置颜色 for(inti=0;i<=pUniqueValueRenderer.ValueCount-1;i++) { st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专题 实现 代码