ArcEngine 渲染的使用.doc_第1页
ArcEngine 渲染的使用.doc_第2页
ArcEngine 渲染的使用.doc_第3页
ArcEngine 渲染的使用.doc_第4页
ArcEngine 渲染的使用.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

ArcEngine 渲染的使用 ArcEngine 渲染的使用1.Feature的基本渲染方法Feature的常用的绘制方法包括: 1.简单绘制 2.唯一值绘制/多字段唯一值绘制 3.点密度/多字段点密度绘制 4.数据分级绘制 5.质量图(饼图/直方图) 6.按比例尺渲染 7.比例符号渲染 1.简单渲染 简单渲染是ArcEngine的默认渲染,我们打开一个FeatureClass,建立一个FeatureLayer的时候,如果没有给FeatureLayer设置Renderer那么使用的就是简单渲染。简单渲染对整个图层中的所有Feature使用同一种方式显示。简单渲染在ArcEngine中用ISimpleRenderer来表示。ISimpleRenderer的使用方式如下: /假设layer是一个IFeatureLayer,获取IGeoFeatureLayer IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer; /构造SimpleRenderer ISimpleRenderer renderer=new SimpleRendererClass(); renderer.description=简单的渲染一下; renderer.Label=符号的标签; /假设sym是一个和该图层中Geometry类型对应的符号; renderer.Symbol=sym; /为图层设置渲染,注意需要刷新该图层。 geoLayer.Renderer=renderer; 2.独立值/多字段独立值渲染 独立值/多字段独立值渲染,根据Feature的某一个字段的数据或某几个字段的组合结果来确定符号。 具有相同值或相同组合值的Feature,使用一样的符号。在使用多个字段的使用,每个字段的取值之间 使用分割符来连接。字段的取值顺序和在Renderer中设置的一样。 基本使用方式如下: /假设layer是一个IFeatureLayer,获取IGeoFeatureLayer IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer; /构造一个UniqueValueRenderer IUniqueValueRenderer renderer=new UniqueValueRendererClass(); /假设使用两个字段来渲染 renderer.FieldCount=2; /假设YSLX字段表示要素类型 /假设YSYT字段表示要数用途 renderer.set_Field(0,YSLX); renderer.set_Field(1,YSYT); /字段之间使用 | 来连接(默认取值) renderer.FieldDelimiter=|; /设置默认符号 renderer.DefaultSymbol=defaultSymbol; renderer.DefaultLabel=默认Label; /添加值 renderer.addValue(房屋|民居,民居房屋,MJSymbol); renderer.addValue(房屋|商业用地,商业用地,SYSymbol); . /还可以通过set_Symbol,set_Heading、set_Value来修改上述设置。 geoLayer.Renderer=renderer. 3.点密度/多字段点密度 点密度图通过在Feature的图形上打点来表示数据的数多,点越密集表示数据量越大。 还可以使用多字段的点密度图。这个使用同一个Feature上就可以显示几种不同的点。 注意点密度图有一个特殊的地方: 点密度图使用的符号是面状符号。而其中有需要包括点状符号。 接口使用如下: IDotDensityRenderer renderer=new DotDensityRendererClass ();IRendererFields flds=(IRendererFields)renderer;flds.AddField(MJ ,面积);flds.AddField(RK,人口);IDotDensityFillSymbol ddSym=new DotDensityFillSymbolClass();ISymbolArray symArray=(ISymbolArray)ddSym;symArray.AddSymbol(mjSymbol);symArray.AddSymbol(rkSymbol);ddSym.Outline =(ILineSymbol)outlineSymbol ;ddSym.DotSize =10 ;ddSym.FixedPlacement=true;renderer.DotDensitySymbol =ddSym;renderer.DotValue=20 ;renderer.MaintainSize=this.m_dotdensityParam .MaintainSize ;IGeoFeatureLayer geoLayer=(IGeoFeatureLayer)layer ;geoLayer.Renderer =(IFeatureRenderer)renderer;4.数据分级绘制(使用IClassBreaksRenderer)5.饼图/直方图(使用IChartRenderer)6.按比例尺渲染(使IScaleDependentRenderer)7.比例符号渲染(使用 IProportionalSymbolRenderer )2.图例的使用 图例的使用通过ILegendInfo接口。每个Renderer都实现了该接口,但是有时候该实现不好用, 所以也可以自己实现该接口。实现过程是比较简单的。3.渲染层次 使用ILevelRender 接口。该接口可以指定一 当前的Level(-1)表示绘制全部。 然后 提供一个符号数组 ,注意每个符号要指定Level .如果不指定就默认为0。4.透明度控制 透明度控制使用 ITransparencyRenderer 接口。该接口允许指定一个字段,字段取值用来表示透明度 注意 透明度的取值在0-100之间。5.数据正规化 数据正规化用 IDataNormalization 接口来表示。该接口提供了几种正规化表示方法。6.部分渲染 部分渲染通过使用IDataExclusion 来实现。该接口允许提供过滤语句来过滤掉不需要渲染的Feature。 同时也可以给他们制定特殊的符号。同时控制是否显示7.旋转控制 旋转控制通过使用IRotationRenderer 接口来表示。该接口要求提供旋转角度的字段。同时要求提供旋转的 方法。8.数据样本IDataSampling 没有使用过。9.外表关联ITable dispTable=(IDisplayTable)feaLayer).DisplayTable ;/图层ITable attTable;/外表IMemoryRelationshipClassFactory fac=new MemoryRelationshipClassFactoryClass ();IRelationshipClass relClass=fac.Open(JZMJ,(IObjectClass)dispTable,ZDDJH,IObjectClass)attTable,G03,Forward,Backward,esriRelCardinality.esriRelCardinalityOneToOne);IDisplayRelationshipClass dispRelClass=feaLayer as IDisplayRelationshipClass ;dispRelClass.DisplayRelationshipClass(relClass,esriJoinType.esriLeftInnerJoin);10.统计分析 ITableHistogram tableHistogram=new BasicTableHistogramClass (); tableHistogram.Table =(IDisplayTable)layer).DisplayTable ; tableHistogram.Field =fieldName ; object valueArray=null, freq=null; IBasicHistogram basicHistogram=(IBasicHistogram)tableHistogram; basicHistogram.GetHistogram(out valueArray,out freq); IClassify classify=null;int breakNum=6;/分类方法switch(ClassifyMethod )case ClassifyMethodName.lsClassifyMethodEqualInterval:EqualIntervalClass eq=new EqualIntervalClass ();eq.Classify (valueArray,freq,ref breakNum);classify=(IClassify)eq;break;case ClassifyMethodName.lsClassifyMethodStandardDeviation:StandardDeviationClass sd=new StandardDeviationClass ();IStatisticsResults stat= histogram as IStatisticsResults ;classify=sd as IClassify;classify.SetHistogramData (valueArray,freq);IDeviationInterval di=sd as IDeviationInterval ;di.DeviationInterval=1;di.Mean=stat.Mean;di.StandardDev=stat.StandardDeviation;classify.Classify (ref breakNum);break;case ClassifyMethodName.lsClassifyMethodQuantile:Quantile qc=new QuantileClass ();qc.Classify (valueArray,freq,ref breakNum);classify=qc as IClassify ;break;case ClassifyMethodName.lsClassifyMethodNaturalBreaks:NaturalBreaksClass nb=new NaturalBreaksClass ();nb.Classify (valueArray,freq,ref breakNum);classify=nb as IClassify ;break;case ClassifyMethodName.lsClassifyMethodDefinedInterval:DefinedIntervalClass di=new DefinedIntervalClass ();di.IntervalRange =this.m_classBreaksParam .Interval ;di.Classify (valueArray,freq,ref breakNum);classify=di as IClassify ;break;default:EqualIntervalClass eq=new EqualIntervalClass ();eq.Classify (valueArray,freq,ref breakNum);classify=(IClassify)eq;break;object o=classify.ClassBreaks ;System.Array breakArray= o as System.Array;现在breakArray中就是统计后的数据了。ArcEngine 渲染的使用作者:GIS门户网 【原创或转载】GIS云中飞鹏2008年03月09日 1.Feature的基本渲染方法Feature的常用的绘制方法包括: 1.简单绘制 2.唯一值绘制/多字段唯一值绘制 3.点密度/多字段点密度绘制 4.数据分级绘制 5.质量图(饼图/直方图) 6.按比例尺渲染 7.比例符号渲染 1.简单渲染 简单渲染是ArcEngine的默认渲染,我们打开一个FeatureClass,建立一个FeatureLayer的时候,如果没有给FeatureLayer设置Renderer那么使用的就是简单渲染。简单渲染对整个图层中的所有Feature使用同一种方式显示。简单渲染在ArcEngine中用ISimpleRenderer来表示。ISimpleRenderer的使用方式如下: /假设layer是一个IFeatureLayer,获取IGeoFeatureLayer IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer; /构造SimpleRenderer ISimpleRenderer renderer=new SimpleRendererClass(); renderer.description=简单的渲染一下; renderer.Label=符号的标签; /假设sym是一个和该图层中Geometry类型对应的符号; renderer.Symbol=sym; /为图层设置渲染,注意需要刷新该图层。 geoLayer.Renderer=renderer; 2.独立值/多字段独立值渲染 独立值/多字段独立值渲染,根据Feature的某一个字段的数据或某几个字段的组合结果来确定符号。 具有相同值或相同组合值的Feature,使用一样的符号。在使用多个字段的使用,每个字段的取值之间 使用分割符来连接。字段的取值顺序和在Renderer中设置的一样。 基本使用方式如下: /假设layer是一个IFeatureLayer,获取IGeoFeatureLayer IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer; /构造一个UniqueValueRenderer IUniqueValueRenderer renderer=new UniqueValueRendererClass(); /假设使用两个字段来渲染 renderer.FieldCount=2; /假设YSLX字段表示要素类型 /假设YSYT字段表示要数用途 renderer.set_Field(0,YSLX); renderer.set_Field(1,YSYT); /字段之间使用 | 来连接(默认取值) renderer.FieldDelimiter=|; /设置默认符号 renderer.DefaultSymbol=defaultSymbol; renderer.DefaultLabel=默认Label; /添加值 renderer.addValue(房屋|民居,民居房屋,MJSymbol); renderer.addValue(房屋|商业用地,商业用地,SYSymbol); . /还可以通过set_Symbol,set_Heading、set_Value来修改上述设置。 geoLayer.Renderer=renderer. 3.点密度/多字段点密度 点密度图通过在Feature的图形上打点来表示数据的数多,点越密集表示数据量越大。 还可以使用多字段的点密度图。这个使用同一个Feature上就可以显示几种不同的点。 注意点密度图有一个特殊的地方: 点密度图使用的符号是面状符号。而其中有需要包括点状符号。 接口使用如下: IDotDensityRenderer renderer=new DotDensityRendererClass ();IRendererFields flds=(IRendererFields)renderer;flds.AddField(MJ ,面积);flds.AddField(RK,人口);IDotDensityFillSymbol ddSym=new DotDensityFillSymbolClass(); ArcEngine 渲染的使用(2)作者:GIS门户网 【原创或转载】GIS云中飞鹏2008年03月09日ISymbolArray symArray=(ISymbolArray)ddSym;symArray.AddSymbol(mjSymbol);symArray.AddSymbol(rkSymbol);ddSym.Outline =(ILineSymbol)outlineSymbol ;ddSym.DotSize =10 ;ddSym.FixedPlacement=true;renderer.DotDensitySymbol =ddSym;renderer.DotValue=20 ;renderer.MaintainSize=this.m_dotdensityParam .MaintainSize ;IGeoFeatureLayer geoLayer=(IGeoFeatureLayer)layer ;geoLayer.Renderer =(IFeatureRenderer)renderer;4.数据分级绘制(使用IClassBreaksRenderer)5.饼图/直方图(使用IChartRenderer)6.按比例尺渲染(使IScaleDependentRenderer)7.比例符号渲染(使用 IProportionalSymbolRenderer )2.图例的使用 图例的使用通过ILegendInfo接口。每个Renderer都实现了该接口,但是有时候该实现不好用, 所以也可以自己实现该接口。实现过程是比较简单的。3.渲染层次 使用ILevelRender 接口。该接口可以指定一 当前的Level(-1)表示绘制全部。 然后 提供一个符号数组 ,注意每个符号要指定Level .如果不指定就默认为0。 4.透明度控制 透明度控制使用 ITransparencyRenderer 接口。该接口允许指定一个字段,字段取值用来表示透明度 注意 透明度的取值在0-100之间。5.数据正规化 数据正规化用 IDataNormalization 接口来表示。该接口提供了几种正规化表示方法。6.部分渲染 部分渲染通过使用IDataExclusion 来实现。该接口允许提供过滤语句来过滤掉不需要渲染的Feature。 同时也可以给他们制定特殊的符号。同时控制是否显示7.旋转控制 旋转控制通过使用IRotationRenderer 接口来表示。该接口要求提供旋转角度的字段。同时要求提供旋转的 方法。8.数据样本IDataSampling 没有使用过。9.外表关联ITable dispTable=(IDisplayTable)feaLayer).DisplayTable ;/图层ITable attTable;/外表IMemoryRelationshipClassFactory fac=new MemoryRelationshipClassFactoryClass ();IRelationshipClass relClass=fac.Open(JZMJ,(IObjectClass)dispTable,ZDDJH,IObjectClass)attTable,G03,Forward,Backward,esriRelCardinality.esriRelCardinalityOneToOne);IDisplayRelationshipClass dispRelClass=feaLayer as IDisplayRelationshipClass ;dispRelClass.DisplayRelationshipClass(relClass,esriJoinType.esriLeftInnerJoin);10.统计分析 ITableHistogram tableHistogram=new BasicTableHistogramClass (); tableHistogram.Table =(IDisplayTable)layer).DisplayTable ; tableHistogram.Field =fieldName ; object valueArray=null, freq=null; IBasicHistogram basicHistogram=(IBasicHistogram)tableHistogram; basicHistogram.GetHistogram(out valueArray,out freq); IClassify classify=null;int breakNum=6;/分类方法switch(ClassifyMethod )case ClassifyMethodName.lsClassifyMethodEqualInterval:ArcEngine 渲染的使用(3)作者:GIS门户网 【原创或转载】GIS云中飞鹏2008年03月09日EqualIntervalClass eq=new EqualIntervalClass ();eq.Classify (valueArray,freq,ref breakNum);classify=(IClassify)eq;break;case ClassifyMethodName.lsClassifyMethodStandardDeviation:StandardDeviationClass sd=new StandardDeviationClass ();IStatisticsResults stat= histogram as IStatisticsResults ;classify=sd as IClassify;classify.SetHistogramData (valueArray,freq);IDeviationInterval di=sd as IDeviationInterval ;di.DeviationInterval=1;di.Mean=stat.Mean;di.StandardDev=stat.StandardDeviation;classify.Classify (ref breakNum);break;case ClassifyMethodName.lsClassifyMethodQuantile:Quantile qc=new QuantileClass ();qc.Classify (valueArray,freq,ref breakNum);classify=qc as IClassify ;break;case ClassifyMethodName.lsClassifyMethodNaturalBreaks:NaturalBreaksClass nb=new NaturalBreaksClass ();nb.Classify (valueArray,freq,ref breakNum);classify=nb as IClassify ;break;case ClassifyMethodName.lsClassifyMethodDefinedInterval:DefinedIntervalClass di=new DefinedIntervalClass ();di.IntervalRange =this.m_classBreaksParam .Interval ;di.Classify (valueArray,freq,ref breakNum);classify=di as IClassify ;break;default:EqualInterv alClass eq=new EqualIntervalClass ();eq.Classify (valueArray,freq,ref breakNum);classify=(IClassify)eq;break;ArcEngine 渲染的使用(4)作者:GIS门户网 【原创或转载】GIS云中飞鹏2008年03月09日object o=classify.ClassBreaks ;System.Array breakArray= o as System.Array;现在breakArray中就是统计后的数据了。原ArcGIS Engine 渲染-饼图【转载】/njlhb/archive/2007/07/22/827224.htmlprivate RgbColor GetRgbColor(int red, int green, int blue)3sNews.Net3S社区&资讯平台(GIS|RS|GPS)$?3qsQc| pF aD(r2Hv&|Ae0 RgbColor rgbColor = new RgbColorClass();3sNews.Net3S社区&资讯平台(GIS|RS|GPS)9vYpF rgbColor.Red = red;b _w ?&R+ldA!G0 rgbColor.Green = green;3sNews.Net3S社区&资讯平台(GIS|RS|GPS) ctQfaQ/Q rgbColor.Blue = blue; return rgbColor;%Vf B-Ok+i#vp0 private void btnPieChart_Click(object sender, EventArgs e)*l(eJ/4R1C0 3sNews.Net3S社区&资讯平台(GIS|RS|GPS)?r IMap pMap = new MapClass();A2g;s8q+&d0e:D lJ0 IFeatureLayer pFLayer = (IFeatureLayer)axMapControl1.get_Layer(0);mO,rL.?5t0 IGeoFeatureLayer pGeoFeaLayer = (IGeoFeatureLayer)pFLayer; IChartRenderer pChartRenderer = new ChartRendererClass(); / Set up the field to draw charts IRendererFields pRenderFields = (IRendererFields)pChartRenderer;T8AEE/S+OC+_o y0 pRenderFields.AddField(Pop_cntry, null);3sNews.Net3S社区&资讯平台(GIS|RS|GPS)%H&iBDG*F IPieChartRenderer pPieChartRender = (IPieChartRenderer)pChartRenderer; /Calculate the max value of the data field to scale the chartHfcPl$F0 /ICursor pCursor = new CursorClass(); IQueryFilter pQueryFilter = new QueryFilterClass();S+s2W/kp;e&K0 /IRowBuffer pRow = new RowBufferClass();w ?f b-YS#X _A0 ITable pTable = (ITable)pGeoFeaLayer;X8qcz*HR,b0 pQueryFilter.AddField(Pop_cntry);SG9o,iF1G2eb0 ICursor pCursor = pTable.Search(pQueryFilter, true); int fieldIndex;4A&zWsS5O:y0 double MaxValue;3sNews.Net3S社区&资讯平台(GIS|RS|GPS) APp bool firstValue;hh(Le)D0 double fieldValue; fieldIndex = pTable.FindField(Pop_cntry);3sNews.Net3S社区&资讯平台(GIS|RS|GPS)9OWjq7/C firstValue = true;2k3SV X_Njb0 MaxValue = 0;3sNews.Net3S社区&资讯平台(GIS|RS|GPS) TM-e&E1&1g IRowBuffer pRow = pCursor.NextRow();3sNews.Net3S社区&资讯平台(GIS|RS|GPS)kU-h.mIs;N%U1tMAa while (pRow != null)3sNews.Net3S社区&资讯平台(GIS|RS|GPS)X F D &b:t B:Dj U0 fieldValue =(double) pRow.get_Value(fieldIndex);3sNews.Net3S社区&资讯平台(GIS|RS|GPS);P e;q5a*yT if (firstValue),Gt.#Lz0 (T%k*bG iAM6w:l0 MaxValue = fieldValue;gcdh1B#y1hV,tRw U0 firstValue = false;3sNews.Net3S社区&资讯平台(GIS|RS|GPS)Y-d9p Cw mJ$S if (fieldValue MaxValue)3sNews.Net3S社区&资讯平台(GIS|RS|GPS)*Z1Pc3V :Gg s;VB a660 MaxValue = fieldValue;3sNews.Net3S社区&资讯平台(GIS|RS|GPS)*W pC.E?j 3sNews.Net3S社区&资讯平台(GIS|RS|GPS)BlX%Q-K.L.?O*v pRow = pCursor.NextRow();3sNews.Net3S社区&资讯平台(GIS|RS|GPS):D8VAFdZ_U IPieChartSymbol pPiechartSymbol = new Pie ChartSymbolClass();(w31t

温馨提示

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

评论

0/150

提交评论