AE渲染使用.docx

上传人:b****7 文档编号:26278680 上传时间:2023-06-17 格式:DOCX 页数:7 大小:16.53KB
下载 相关 举报
AE渲染使用.docx_第1页
第1页 / 共7页
AE渲染使用.docx_第2页
第2页 / 共7页
AE渲染使用.docx_第3页
第3页 / 共7页
AE渲染使用.docx_第4页
第4页 / 共7页
AE渲染使用.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

AE渲染使用.docx

《AE渲染使用.docx》由会员分享,可在线阅读,更多相关《AE渲染使用.docx(7页珍藏版)》请在冰豆网上搜索。

AE渲染使用.docx

AE渲染使用

1.Feature的基本渲染方法

Feature的常用的绘制方法包括:

1.简单绘制

2.唯一值绘制/多字段唯一值绘制

3.点密度/多字段点密度绘制

4.数据分级绘制

5.质量图(饼图/直方图)

6.按比例尺渲染

7.比例符号渲染

1.简单渲染

简单渲染是ArcEngine的默认渲染,我们打开一个FeatureClass,建立一个FeatureLayer的时候,

如果没有给FeatureLayer设置Renderer那么使用的就是简单渲染。

简单渲染对整个图层中的所有Feature

使用同一种方式显示。

简单渲染在ArcEngine中用ISimpleRenderer来表示。

ISimpleRenderer的使用方式如下:

//假设layer是一个IFeatureLayer,获取IGeoFeatureLayer

IGeoFeatureLayergeoLayer=layerasIGeoFeatureLayer;

//构造SimpleRenderer

ISimpleRendererrenderer=newSimpleRendererClass();

renderer.deion="简单的渲染一下";

renderer.Label="符号的标签";

//假设sym是一个和该图层中Geometry类型对应的符号;

renderer.Symbol=sym;

//为图层设置渲染,注意需要刷新该图层。

geoLayer.Renderer=renderer;

2.独立值/多字段独立值渲染

独立值/多字段独立值渲染,根据Feature的某一个字段的数据或某几个字段的组合结果来确定符号。

具有相同值或相同组合值的Feature,使用一样的符号。

在使用多个字段的使用,每个字段的取值之间

使用分割符来连接。

字段的取值顺序和在Renderer中设置的一样。

基本使用方式如下:

//假设layer是一个IFeatureLayer,获取IGeoFeatureLayer

IGeoFeatureLayergeoLayer=layerasIGeoFeatureLayer;

//构造一个UniqueValueRenderer

IUniqueValueRendererrenderer=newUniqueValueRendererClass();

//假设使用两个字段来渲染

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上就可以显示几种不同的点。

注意点密度图有一个特殊的地方:

点密度图使用的符号是面状符号。

而其中有需要包括点状符号。

接口使用如下:

IDotDensityRendererrenderer=newDotDensityRendererClass();

IRendererFieldsflds=(IRendererFields)renderer;

flds.AddField("MJ","面积");

flds.AddField("RK","人口");

IDotDensityFillSymbolddSym=newDotDensityFillSymbolClass();

ISymbolArraysymArray=(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;

IGeoFeatureLayergeoLayer=(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.外表关联

ITabledispTable=((IDisplayTable)feaLayer).DisplayTable;//图层

ITableattTable;//外表

IMemoryRelationshipClassFactoryfac=newMemoryRelationshipClassFactoryClass();IRelationshipClassrelClass=fac.Open("JZMJ",(IObjectClass)dispTable,"ZDDJH",

IObjectClass)attTable,"G03",

"Forward","Backward",

esriRelCardinality.esriRelCardinalityOneToOne);

IDisplayRelationshipClassdispRelClass=feaLayerasIDisplayRelationshipClass;dispRelClass.DisplayRelationshipClass(relClass,esriJoinType.esriLeftInnerJoin);

10.统计分析

ITableHistogramtableHistogram=newBasicTableHistogramClass();

tableHistogram.Table=((IDisplayTable)layer).DisplayTable;

tableHistogram.Field=fieldName;

objectvalueArray=null,freq=null;

IBasicHistogrambasicHistogram=(IBasicHistogram)tableHistogram;

basicHistogram.GetHistogram(outvalueArray,outfreq);

IClassifyclassify=null;

intbreakNum=6;

//分类方法

switch(ClassifyMethod)

{

caseClassifyMethodName.lsClassifyMethodEqualInterval:

{

EqualIntervalClasseq=newEqualIntervalClass();

eq.Classify(valueArray,freq,refbreakNum);

classify=(IClassify)eq;

break;

}

caseClassifyMethodName.lsClassifyMethodStandardDeviation:

{

StandardDeviationClasssd=newStandardDeviationClass();IStatisticsResultsstat=histogramasIStatisticsResults;classify=sdasIClassify;

classify.SetHistogramData(valueArray,freq);IDeviationIntervaldi=sdasIDeviationInterval;

di.DeviationInterval=1;

di.Mean=stat.Mean;

di.StandardDev=stat.StandardDeviation;

classify.Classify(refbreakNum);

break;

}

caseClassifyMethodName.lsClassifyMethodQuantile:

{

Quantileqc=newQuantileClass();

qc.Classify(valueArray,freq,refbreakNum);

classify=qcasIClassify;

break;

}

caseClassifyMethodName.lsClassifyMethodNaturalBreaks:

{

NaturalBreaksClassnb=newNaturalBreaksClass();

nb.Classify(valueArray,freq,refbreakNum);

classify=nbasIClassify;

break;

}

caseClassifyMethodName.lsClassifyMethodDefinedInterval:

{

DefinedIntervalClassdi=newDefinedIntervalClass();

di.IntervalRange=this.m_classBreaksParam.Interval;

di.Classify(valueArray,freq,refbreakNum);classify=diasIClassify;

break;

}

default:

{

EqualIntervalClasseq=newEqualIntervalClass();eq.Classify(valueArray,freq,refbreakNum);classify=(IClassify)eq;

break;

}

}

objecto=classify.ClassBreaks;

System.ArraybreakArray=oasSystem.Array;

现在breakArray中就是统计后的数据了。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1